如何知道从DataTable中选择了哪些行

时间:2011-09-02 18:52:57

标签: datatable richfaces rows selected

我有一个页面,其中包含“rich:DataTable”。对于每个表行,添加一个复选框以允许用户在执行操作之前选择多行。如何检索已选择的行?

2 个答案:

答案 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)

<已解决[已解决]我另有决定。以这种方式添加了“地图”和带有“CheckBox”的列:“”。通过提交表单,选中的“Map”行将使Boolean属性等于“true”。

我的豆子:

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>