DataTable中的JSF selectBooleanCheckbox值始终为false
当我单击调用筛选所选项目的方法的按钮时,每个items selected参数都为false,即使选中了它的复选框。这就像selectBoolean复选框的值始终为false一样。我没有意识到这个问题。为什么它不能将值设置为true 我有一个带有dataTable的JSF页面:DataTable中的JSF selectBooleanCheckbox值始终为false,jsf,datatable,selectbooleancheckbox,Jsf,Datatable,Selectbooleancheckbox,当我单击调用筛选所选项目的方法的按钮时,每个items selected参数都为false,即使选中了它的复选框。这就像selectBoolean复选框的值始终为false一样。我没有意识到这个问题。为什么它不能将值设置为true 我有一个带有dataTable的JSF页面: <h:dataTable value="#{productManagedBean.showProducts()}" var="item"> <h:column> <f:fac
<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>
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());
}
}
}
公共列表showProducts(){
if(itemsShown==false){
list=productSessionBean.getAllProducts();
用于(产品p:列表){
selectionList.add(新产品选择(p));
}
itemsShown=真;
}
对于(产品选择p:selectionList){
p、 getProduct().setImage(“../upload/”+p.getProduct().getImage());
}
返回选择列表;
}
public void filterCheckedItems(){
对于(产品选择p:selectionList){
如果(p.isSelected()){
checkedList.add(p.getProduct());
}
}
}
请将dataTable和commandButton放在同一表单中,然后重试。目前,您的复选框选择似乎未提交,因为dataTable未嵌套在同一表单中。看起来selectionList
为空或其他内容。在控制台中打印出p.isSelected()
,并尝试取消/检查列表中显示的许多产品。