簡體   English   中英

DataTable中的JSF selectBooleanCheckbox值始終為false

[英]JSF selectBooleanCheckbox value in DataTable is allways false

當我單擊調用用於過濾選定項目的方法的按鈕時,即使選中了其復選框,每個選定項目的參數均為false。 就像selectBoolean復選框的值始終為false一樣。 我沒有意識到問題。 為什么不將值設置為true?

我有一個帶dataTable的JSF頁面:

<h:dataTable value="#{productManagedBean.showProducts()}" var="item">
   <h:column>
      <f:facet name="header">
         <h:outputText value="Select"/>
      </f:facet>
      <h:selectBooleanCheckbox value="#{item.selected}"></h:selectBooleanCheckbox>
   </h:column>
<h:column>
   <f:facet name="header">
      <h:outputText value="Image"/>
   </f:facet>
   <div class="container-images-product-list">
      <h:graphicImage value='#{item.product.image}' class="images-product-list" />
   </div>

<h:form>
   <h:commandButton value="Delete selected product/s" class="pure-button pure-button-primary" action="#{productManagedBean.filterCheckedItems()}"></h:commandButton>
</h:form>

dataTable中包含的項目類別:

public class ProductSelection {
    private Product product;
    private boolean selected;

    public ProductSelection(Product product) {
        this.product = product;
    }

    public ProductSelection(Product product, boolean selected) {
        this.product = product;
        this.selected = selected;
    }

    public Product getProduct() {
        return product;
    }

    public void setProduct(Product product) {
        this.product = product;
    }

    public boolean isSelected() {
        return selected;
    }

    public void setSelected(boolean selected) {
        this.selected = selected;
    }
}

ManagedBean中的方法:

public List<ProductSelection> showProducts(){
    if(itemsShown == false) {
        list = productSessionBean.getAllProducts();
        for(Product p: list){
            selectionList.add(new ProductSelection(p));
        }
        itemsShown = true;
    }
    for (ProductSelection p: selectionList) {
        p.getProduct().setImage("../uploaded/" + p.getProduct().getImage());
    }
    return selectionList;   
}

public void filterCheckedItems(){
    for (ProductSelection p: selectionList) {
        if(p.isSelected()){
            checkedList.add(p.getProduct());
        }
    }
}

請以相同的形式放置dataTable和commandButton,然后重試。 當前,您的復選框選擇似乎未提交,因為dataTable沒有嵌套在同一表格中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM