JSF复选框全选问题

原创 2007年09月30日 10:33:00

   JSF 中复选框h:selectBooleanCheckBox 标签的用法如下:

    <h:selectBooleanCheckbox id="select" value="#{emp.checked}" />

每个对象有各自有一个属性用来保存其选中与否状态,这个属性为Boolean型变量,对应到selectBooleanCheckbox的值为true/false

如果是一个列表,每条记录都有一个复选框,用来提供(批量)操作,那么就存在列表"全选/全不选"的情况

可以如下实现:

//全选or全不选
 function selectAll()
{
var oTable=document.all['form:dataTable'];    
var oChkAll=document.all['form:selectall']
 
if(oTable != null && oChkAll != null)
{
for(j=1;j<oTable.rows.length;j++)
{
oTable.rows(j).cells(0).children.item(0).checked=oChkAll.checked;
}
}
}
 
JSF页面代码:
...
<h:selectBooleanCheckbox id="selectall" onclick="selectAll()" />
                                                        <h:outputLabel for="selectall">
                                                               <h:outputText value="全选" />
                                                        </h:outputLabel>
 
                                                        <t:dataTable align="left" border="1" rows="10" first="0"
                                                               id="dataTable" rendered="true"
                                                               value="#{empController.empModel}" var="emp">
                                                               <t:column>
                                                                      <f:facet name="header">
                                                                             <h:outputText value="Select"></h:outputText>
                                                                      </f:facet>
                                                                      <h:selectBooleanCheckbox id="select" value="#{emp.checked}" />
                                                               </t:column>
...
如果采用上面的方式的话,对应到的数据集中的对象就必须有一个属性"checked"用来保存记录的选中或不选中状态,这样的话每个对象就要多出一个它自身属性之外的属性,而这样的结果显然不是很好,有冗余;这样在生成每一个对象时就要多加一个属性,如果系统中已经建立了领域对象(只含有自身属性),那么在该对象用于页面显示的时候就需要一个属性,这时就不得不构造一个DTO来加入"checked"这个状态属性,这样的话系统中就多了一对象,而且这个对象仅仅多出一个属性,显然这样的结果是我们不能接受的.
 
但是我至今也没找到合适的方法,不用这个"checked"属性来保存其选中状态,希望能有高手指点,谢谢!
然而,JSF 的核心思想是组件绑定,也就是说前台要与后台想关联的每一个组件都必须对应到后台BackingBean的一个对象,这样对能呈现出后台处理后的组件;这是JSF的方便之处,然后这个复选框确是不得不多个属性来处理,是不是多出这个小小的属性来提供方便是比较值得的?这个算不了什么呢?
PS:刚刚接触JSF,理解难免有错,说得不对的地方请大家指出!谢谢!

JSF组件之selectManyCheckbox默认default 勾选checked

本文主要讲解selectManyCheckbox在渲染初始化的时候如何默认勾选部分checkBox。 网络上JSF组件的知识太少了,被selectManyCheckbox默认勾选的情况搞死了,浪费大半...
  • hithedy
  • hithedy
  • 2013年11月07日 16:56
  • 691

JSF中selectOneRadio(单选按钮)的相关问题(包括在dataTable里的循环使用)

      selectOneRadio用来显示一组单选按钮。由其子UISelectItem或UISelectItems组件配置。(SelectItem可以绑定一个属性,SelectItems可以绑定...
  • xiaolei2009
  • xiaolei2009
  • 2009年10月06日 13:36
  • 6273

JSF 一些经验

我目前的项目前端使用的是jsf+seam的架构,目前项目已经进入尾声,我想把一些心得体会给大家说说,以便大家在使用jsf的时候,少走弯路。 1.异常处理问题:请为jsf加入seam框架,看看Seam...
  • wanglang3081
  • wanglang3081
  • 2013年11月01日 10:47
  • 1390

JSF2.0 SelectBooleanCheckbox在dataTable中实现全选,自定义选择多行操作

前端页面部分代码:  ...
  • qiao000_000
  • qiao000_000
  • 2010年03月24日 13:54
  • 6007

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

在网上搜了一下,之前的人有修改实体类的,在EntityBean中加上isSelected属性.但我觉得实体类加上这一条属性只为了实现多行选中实在不妥.后来我用了在BackingBean中加Map属性的...
  • mosesgi
  • mosesgi
  • 2008年03月11日 17:04
  • 3668

JSF复选框全选问题

   JSF 中复选框h:selectBooleanCheckBox 标签的用法如下:    每个对象有各自有一个属性用来保存其选中与否状态,这个属性为Boolean型变量,对应到selectBool...
  • AirBiao
  • AirBiao
  • 2007年09月30日 10:33
  • 2566

checkbox 默认勾选

默认勾选的方法在加载时加入$("#isUserSign").attr("checked","checked");
  • yy280458609
  • yy280458609
  • 2012年06月15日 16:04
  • 1035

基于jsf的datatable多选操作

首先在页面上要使用Myfaces的一个taglib 然后在页面的内部用 下面是datatable的写法 binding="#{后台Bean.table}">//这里在后台bean中要有table...
  • songxiuliang
  • songxiuliang
  • 2017年03月29日 10:25
  • 408

jquery实现复选框的全选操作

最近做了个需求,需要实现列表复选框的全选/取消全选操作,由于之前对这块不是很了解,所以从网上查了一些资料,虽然有各种实现方法,但没找到直接可以套用的。自己琢磨了下,把功能实现,整理如下。 实现细节如...
  • mj158518
  • mj158518
  • 2016年07月20日 00:30
  • 3590

checkBox单选

type="checkbox" name="cbox" value="cbox1" onClick="chooseOne(this);">checkBox1   type="checkb...
  • lizhibin3944
  • lizhibin3944
  • 2013年12月07日 13:39
  • 316
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:JSF复选框全选问题
举报原因:
原因补充:

(最多只允许输入30个字)