我有一个页面,其中包含“rich:DataTable”。对于每个表行,添加一个复选框以允许用户在执行操作之前选择多行。如何检索已选择的行?
答案 0 :(得分:0)
只需向POJO添加一个布尔值,可能称为selected
,代表rich:DataTable
的一行。并将此布尔值绑定到<h:selectBooleanCheckbox>
<rich:column>
中的<rich:dataTable>
例如,您的bean,POJO和视图可能看起来像这样:
<rich:dataTable value="#{myBean.customerList}" var="customer">
<rich:column>
<h:selectBooleanCheckbox value="#{customer.selected}" />
</rich:column>
<rich:column>
<h:outputText value="#{customer.name}" />
</rich:column>
<rich:column>
<h:outputText value="#{customer.address}" />
</rich:column>
</rich:dataTable>
public class MyBean {
private List<Customer> customerList;
//getter and setter for the customerList
}
public class Customer{
private boolean selected;
private String name;
private String address;
//getter and setter for the properties
}
要检索已选择的行,只需迭代MyBean.customerList
并检查selected
的{{1}}属性是否为Customer
。
答案 1 :(得分:0)
我的豆子:
public class Bean<T extends Object> {
private Map<T, Boolean> selectedRowsMap = new HashMap<T, Boolean>(0);
...
public Set<T> getSelectedRows() {
selectedRows.clear();
for (T key : getSelectedRowsMap().keySet()) {
if (getSelectedRowsMap().get(key) == true){
selectedRows.add(key);
}
}
return selectedRows;
}
}
我的XHTML:
<rich:dataTable>
<rich:column>
<h:selectBooleanCheckbox value="#{bean.selectedRowsMap[row]}" />
</rich:column>
<rich:column>
<h:outputText value="${row.age}" />
</rich:column>
...
<rich:dataTable>