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