2014-09-10 5 views
0

선택한 항목을 필터링하는 방법을 호출하는 버튼을 클릭하면 선택한 항목마다 확인란이 선택되어 있어도 선택한 모든 매개 변수가 false입니다. selectBoolean의 값이 allways false 인 것과 같습니다. 나는 그 문제를 깨닫지 못한다. 가치를 사실로 설정하지 않는 이유는 무엇입니까?DataTable의 JSF selectBooleanCheckbox 값이 항상 거짓입니다.

나는 데이터 테이블이있는 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> 

클래스는 데이터 테이블에 포함 :

ManagedBean은에
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; 
    } 
} 

방법 :

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()); 
     } 
    } 
} 
+0

'selectionList'가 비어 있거나 다른 것으로 보입니다. 콘솔에서'p.isSelected()'를 출력하고 목록에 표시된 많은 제품들의 체크를 해제하거나 체크 해보십시오. – Omar

답변

1

배치하십시오 DataTable을하고있는 명령 동일한 양식으로 다시 입력하십시오. dataTable이 같은 양식에 중첩되어 있지 않기 때문에 현재 선택란 선택 사항이 제출되지 않은 것 같습니다.

관련 문제