JSF复选框全选问题

    技术2022-05-11  63

       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" οnclick="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,理解难免有错,说得不对的地方请大家指出!谢谢!

    最新回复(0)