Как обновить строку в JSF dataTable

Как обновить строку в JSF dataTable

В этом примере улучшается предыдущийJSF 2 dataTable example, добавляя функцию «update» для обновления строки в dataTable.

Обновить концепцию

Общая концепция довольно проста:

1. Добавьте свойство «ediatble», чтобы отслеживать статус редактирования строки.

//...
public class Order{

    String orderNo;
    String productName;
    BigDecimal price;
    int qty;

    boolean editable;

    public boolean isEditable() {
        return editable;
    }
    public void setEditable(boolean editable) {
        this.editable = editable;
    }

2. Присвойте ссылку «Редактировать» в конец каждой строки, при щелчке установите «ediatble» = true. В JSF 2.0 вы можете напрямую указать значения параметров в выражении метода, см. Действие редактирования ниже:

//...




        Action

        

//...
public String editAction(Order order) {

    order.setEditable(true);
    return null;
}

3. На странице JSF, если «ediatble» = true, отобразить текстовое поле ввода для редактирования; В противном случае просто отобразите обычный текст на выходе. Простой трюк для имитации эффекта обновления :)

//...




    Order No

    

    

4. Наконец, предоставьте кнопку для сохранения ваших изменений. Когда вы внесете изменения в текстовое поле ввода и сохраните его, все значения будут автоматически связаны с соответствующим компонентом поддержки.

//...

пример

Пример JSF 2.0 для реализации вышеуказанной концепции для обновления строки в dataTable.

1. Управляемый Боб

Управляемый бин с именем «порядок», не требующий пояснений.

package com.example;

import java.io.Serializable;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Arrays;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;

@ManagedBean(name="order")
@SessionScoped
public class OrderBean implements Serializable{

    private static final long serialVersionUID = 1L;

    private static final ArrayList orderList =
        new ArrayList(Arrays.asList(

        new Order("A0001", "Intel CPU",
                new BigDecimal("700.00"), 1),
        new Order("A0002", "Harddisk 10TB",
                new BigDecimal("500.00"), 2),
        new Order("A0003", "Dell Laptop",
                new BigDecimal("11600.00"), 8),
        new Order("A0004", "Samsung LCD",
                new BigDecimal("5200.00"), 3),
        new Order("A0005", "A4Tech Mouse",
                new BigDecimal("100.00"), 10)
    ));

    public ArrayList getOrderList() {
        return orderList;
    }

    public String saveAction() {

        //get all existing value but set "editable" to false
        for (Order order : orderList){
            order.setEditable(false);
        }
        //return to current page
        return null;

    }

    public String editAction(Order order) {

        order.setEditable(true);
        return null;
    }

    public static class Order{

        String orderNo;
        String productName;
        BigDecimal price;
        int qty;
        boolean editable;

        public Order(String orderNo, String productName, BigDecimal price, int qty) {
            this.orderNo = orderNo;
            this.productName = productName;
            this.price = price;
            this.qty = qty;
        }

        //getter and setter methods
    }
}

2. Страница JSF

Страница JSF для отображения данных с тегом dataTable и создания ссылки «Изменить» для обновления записи строки.




    
        
    
    

        

JSF 2 dataTable example

Order No Product Name Price Quantity Action

3. Demo

Сверху вниз, показывает обновляемую запись строки.

jsf2-dataTable-Update-Example-1

jsf2-dataTable-Update-Example-2

jsf2-dataTable-Update-Example-3

jsf2-dataTable-Update-Example-4

Скачать исходный код

Скачать -JSF-2-DataTable-Update-Example.zip (10 КБ)