-2

チェックボックスをクリックすると、JSFが無効なデータテーブルを再レンダリングできるかどうかを誰か説明できますか?

4

1 に答える 1

2

あなたはajaxリスナーでそれを行うことができます

必要なのは、テーブルが無効になっているかどうかを知るためのブール値です(マネージドBeanで無効になっているブール値を参照)。

次は、呼び出されるたびにこのブール値を変更するメソッドです(xhtmlを参照)selectBooleanCheckboxrendered="#{tableController.disabled}"

これは、disabled/renderedなどのブール値に適用できます。


ソースコード(xhtml):

<html xmlns="http://www.w3.org/1999/xhtml"
  xmlns:f="http://java.sun.com/jsf/core"
  xmlns:h="http://java.sun.com/jsf/html">
<h:head>
    <title>Facelet Title</title>
</h:head>
<h:body>

    <h:form>
        <h:dataTable id="table" value="#{tableController.products}" var="item" border="1" rendered="#{tableController.disabled}"
                     headerClass="table-header"
                     styleClass="table-d"
                     rowClasses="table-row">

            <h:column>
                <f:facet name="header">
                    ID
                </f:facet>
                <h:outputText value="#{item.id}"/>
            </h:column>

            <h:column>
                <f:facet name="header">
                    Name
                </f:facet>
                <h:outputText value="#{item.name}"/>
            </h:column>

            <h:column>
                <f:facet name="header">
                    Price
                </f:facet>
                <h:outputText value="#{item.price}"/>
            </h:column>

        </h:dataTable>


        <h:selectBooleanCheckbox value="Id">
            <f:ajax render="@form" listener="#{tableController.enableDisable()}"/>
        </h:selectBooleanCheckbox>
    </h:form>
</h:body>
</html>

マネージドBean:

import java.util.ArrayList;
import java.util.List;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.model.DataModel;
import javax.faces.model.ListDataModel;

@ManagedBean
@SessionScoped
public class TableController {

private boolean disabled;
private DataModel products;

public TableController() {

    List list = new ArrayList<Product>();

    Product p1 = new Product(1, "Z", 1.1);
    Product p2 = new Product(2, "F", 2.5);
    Product p3 = new Product(3, "A", 0.9);

    list.add(p1);
    list.add(p2);
    list.add(p3);

    products = new ListDataModel<Product>(list);
}


 public void enableDisable(){
        disabled = !disabled;  
}

public boolean isDisabled() {
    return disabled;
}

public void setDisabled(boolean disabled) {
    this.disabled = disabled;
}

public DataModel getProducts() {
    return products;
}

public void setProducts(DataModel products) {
    this.products = products;
}    
}

製品クラス:

public class Product {

private int id;
private String name;
private double price;


public Product(int id, String name, double price){

    this.id = id;
    this.name = name;
    this.price = price;

}

public void setId(int id) {
    this.id = id;
}

public void setName(String name) {
    this.name = name;
}

public void setPrice(double price) {
    this.price = price;
}

public int getId() {
    return id;
}

public double getPrice() {
    return price;
}

public String getName() {
    return name;
}

}
于 2012-10-03T20:13:35.180 に答える