JSF的dataTable中实现多行选中(selectBooleanCheckbox)

在网上搜了一下,之前的人有修改实体类的,在EntityBean中加上isSelected属性.但我觉得实体类加上这一条属性只为了实现多行选中实在不妥.

后来我用了在BackingBean中加Map属性的方法来实现. 看代码:

JSF:

< h:form >
    
< h:dataTable  value ="#{myBean.dataList}"  var ="item" >
        
< h:column >
            
< f:facet  name ="header" >
                
< h:outputText  value ="Select"   />
            
</ f:facet >
            
< h:selectBooleanCheckbox  value ="#{myBean.selectedIds[item.id]}"   />
        
</ h:column >
         ...
    
</ h:dataTable >
    
< h:commandButton  value ="Get selected items"  action ="#{myBean.getSelectedItems}"   />
</ h:form >

BackingBean:

public   class  MyBean  {
    
private Map selectedIds = new HashMap();
    
private List selectedDataList;
    
public String getSelectedItems() {
        selectedDataList 
= new ArrayList();
        
for (MyData dataItem : dataList) {
            
//如果使用了分页的话这个判断不可少.
            if(selectIds.get(dataItem.getId())==null){  
                
continue;
            }

            
if (selectedIds.get(dataItem.getId()).booleanValue()) {
                selectedDataList.add(dataItem);
                selectedIds.remove(dataItem.getId()); 
// 删掉已取的项.
            }

        }

        
// 这里加需要处理的代码, 比如批量删除或修改.
        return "selected";
    }

    
public Map getSelectedIds() {
        
return selectedIds;
    }

    
public List getSelectedDataList() {
        
return selectedDataList;
    }

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值