So aktualisieren Sie die Zeile in der JSF-Datentabelle

So aktualisieren Sie die Zeile in der JSF-Datentabelle

In diesem Beispiel werden die vorherigenJSF 2 dataTable example erweitert, indem eine Funktion "update" hinzugefügt wird, um die Zeile in dataTable zu aktualisieren.

Konzept aktualisieren

Das Gesamtkonzept ist recht einfach:

1. Fügen Sie eine "ediatble" -Eigenschaft hinzu, um den Zeilenbearbeitungsstatus zu verfolgen.

//...
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. Weisen Sie am Ende jeder Zeile einen Link "Bearbeiten" zu. Wenn Sie darauf klicken, setzen Sie "ediatble" auf "true". In JSF 2.0 können Sie die Parameterwerte direkt im Methodenausdruck bereitstellen, siehe die folgende Bearbeitungsaktion:

//...




        Action

        

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

    order.setEditable(true);
    return null;
}

3. Wenn auf der JSF-Seite "ediatble" = true ist, wird das Eingabetextfeld zum Bearbeiten angezeigt. Andernfalls wird nur der normale Ausgabetext angezeigt. Ein einfacher Trick, um den Update-Effekt zu simulieren :)

//...




    Order No

    

    

4. Stellen Sie abschließend eine Schaltfläche zum Speichern Ihrer Änderungen bereit. Wenn Sie Änderungen im Eingabetextfeld vornehmen und es speichern, werden alle Werte automatisch an das zugehörige Backing Bean gebunden.

//...

Beispiel

Ein JSF 2.0-Beispiel zur Implementierung des obigen Konzepts zum Aktualisieren von Zeilen in dataTable.

1. Managed Bean

Eine verwaltete Bean namens "order", selbsterklärend.

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 Seite

JSF-Seite, um die Daten mit dem Tag dataTable anzuzeigen, und erstellen Sie einen Link zum Bearbeiten, um den Zeilendatensatz zu aktualisieren.



    
        
    
    

        

JSF 2 dataTable example

Order No Product Name Price Quantity Action

3. Demo

Zeigt von oben nach unten an, dass ein Zeilendatensatz aktualisiert wird.

jsf2-dataTable-Update-Example-1

jsf2-dataTable-Update-Example-2

jsf2-dataTable-Update-Example-3

jsf2-dataTable-Update-Example-4

Quellcode herunterladen

Laden Sie es herunter -JSF-2-DataTable-Update-Example.zip (10 KB)