在JSF DataTable 中实现多选

参考了http://blog.csdn.net/Samland/archive/2006/09/17/1232585.aspx。决定通过修改值对象的方法在
JSF DataTable中实现多选的功能。

首先,给数据模型对象bean中添加一个boolean的属性selected.
  1. public class Item {
  2.  
  3.   private Integer id;
  4.   ...
  5.   private boolean selected;
  6.  
  7.   public Integer getId() {
  8.     return id;
  9.   }
  10.  
  11.   public void setId(Integer id) {
  12.     this.id = id;
  13.   }
  14.  ....
  15.   public boolean isSelected() {
  16.     return selected;
  17.   }
  18.  
  19.   public void setSelected(boolean selected) {
  20.     this.selected = selected;
  21.   }
  22. }
2、在JSF 页面的dataTable中加入一列 ,其value的值和selected属性相对应,这样就可以通过点击checkbox来确定对象是否被选择。
  1. <h:form>
  2. <h:dataTable id="itemsTable" 
  3.     value="#{ListBean.List}" var="row"  >
  4. <h:column>
  5.   <f:facet name="header">
  6.     <h:outputText value="Select" />
  7.   f:facet>
  8.   <h:selectBooleanCheckbox value="#{row.selected}" />
  9. h:column>
  10. <h:column>
  11.   <f:facet name="header">
  12.     <h:outputText value="ID" />  
  13.   f:facet> 
  14.     <h:outputText value="#{row.id}">h:outputText>
  15. h:column>
  16. ...
  17. h:dataTable>
  18. <h:commandButton value="Get Selected"
  19.     actionListener="#{ListBean.getSelectedItems}" />
  20. h:form>
3.在managed beans中通过如下的方式获得被选择的对象.

  1.    1public class ListBean {
  2.    2.  
  3.    3.  private List list;
  4.    4.
  5.    5public getList()
  6.    6. {
  7.    7.    //init list
  8.    8.    return list;
  9.    9. }
  10.   10.  
  11.   11.  
  12.   12.   public void getSelectedItems(ActionEvent event) {
  13.   13.     for (Item item : list) {
  14.   14.       if (item.isSelected()) {
  15.   15.         // do sth with selected items
  16.   16.       }
  17.   17.     }
  18.   18.   }
  19.   19. }

你可能感兴趣的:(在JSF DataTable 中实现多选)