前端页面部分代码:
<h:commandLink action="#{ADManagementAuditListPMG.disAndselectAll(true)}" value="全部选中"/>
<h:commandLink action="#{ADManagementAuditListPMG.disAndselectAll(false)}" value="全部取消"/>
<h:dataTable var="manager" value="#{ADManagementAuditListPMG.dataModel}">
<h:column>
<f:facet name="header"><h:outputText value="选择" /></f:facet>
<h:selectBooleanCheckbox value="#{manager.selected}" disabled="#{!RenderController.av.getAccessRight('PassButton',row.userid)}" id="id#{manager.selected}">
<f:ajax event="change" listener="#{manager.updateSelected}"/>//自定义选择时使用ajax更新selected状态
</h:selectBooleanCheckbox>
</h:column>
</h:dataTable>
ManagerBean中的全选方法:
public void disAndselectAll(boolean selected) {
List<MemberDataAuditDTO> userList = (List<MemberDataAuditDTO>) dataModel.getWrappedData();
for (MemberDataAuditDTO user : userList) {
user.setSelected(selected);
}
}
MemberDataAuditDTO中部分代码:
public class MemberDataAuditDTO implements Serializable {
private static final long serialVersionUID = 1L;
private boolean selected;
public MemberDataAuditDTO() {
}
public boolean getSelected() {
return selected;
}
public void setSelected(boolean selected) {
this.selected = selected;
}
//ajax调用该方法更新selected状态
public void updateSelected(){
System.out.println("selected"+selected);
if(!selected){
selected = true;
}else{;
}
}
以上全选、多选实现使用了纯JSF技术,经过两天的验证发现点问题,以及可以简化的解决方法。
问题:因为复选框使用了权限设置,没有权限的用户登录复选框置灰,不能选择,但使用JSF全选的方法,
disable=true,复选框置灰只是显示而已,全选依然能够选中该复选框,也就是说失去了权限设置的意
义。
修改后的代码如下:
全选JS代码
/**
* 复选框全选/全部取消对应的JS方法
* @param formName 表单名称,
* @param dtName dataTable名称,
* @param checked 是否选中,true为选中,false为取消
*/
function SetCheckedStatus(formName,dtName,checked)
{
var oTableName = formName+':'+dtName;
var oTable=document.getElementById(oTableName);
if(oTable != null)
{
for(j=1;j<oTable.rows.length;j++)
{
oTable.rows[j].cells[0].childNodes[0].checked=checked;//选中复选框
oTable.rows[j].cells[0].childNodes[0].onchange();//触发复选框中onchange事件,进行状态的提交
}
}
}
JSF代码:
<a href="#" mce_href="#" onclick="SetCheckedStatus('form1','dt1',true);">全部选中</a>
<a href="#" mce_href="#" onclick="SetCheckedStatus('form1','dt1',false);">全部取消</a>
<h:dataTable id="dt1" var="manager" value="#{ADManagementAuditListPMG.dataModel}">
<h:column>
<f:facet name="header"><h:outputText value="选择" /></f:facet>
<h:selectBooleanCheckbox value="#{manager.selected}" disabled="#{!RenderController.av.getAccessRight('PassButton',row.userid)}" onchange="submit();">
</h:selectBooleanCheckbox>
</h:column>
此方法只需在DTO中建立相应的 boolean selected; 字段即可。
public class MemberDataAuditDTO implements Serializable {
private static final long serialVersionUID = 1L;
private boolean selected;
public MemberDataAuditDTO() {
}
public boolean getSelected() {
return selected;
}
public void setSelected(boolean selected) {
this.selected = selected;
}
}
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/qiao000_000/archive/2010/03/24/5411728.aspx#
分享到:
相关推荐
NULL 博文链接:https://sailinglee.iteye.com/blog/429696
jsf2.0 dataTable单行修改例子,包含了jsf dataTable修改一行数据的方法
Packtpub.JSF.2.0.Cookbook.Jun.2010 需要研究JSF的可以參考看看 英文內容
JSF开发所必需包:花了很长时间才收集好,很费时,现已收集好,何不分享给大家,让大家节省时间做点有意义的事情呢?呵呵。。。已在附件供大家下载,若是你所需要的东西,那就请投个票、说句鼓励的话,我就满足了。 ...
这是jsf-impl-1.2_15.jar,为了使用方便传上来.只是个jar包.
jsf-facelets-1.1.15.B1.jar
jsf相关jar包, 包含jsf-api.jar jsf-impl.jar jstl-1.2.jar javaee.jar
JSF实战 JSF_In_Action_Ext.pdf 经典教材 国内首屈一指的好书
JSF-1_1-API.chm
Apress[1].Pro.JSF.and.Ajax.Building.Rich.Internet.Components.Feb.2006 <br/>
jsf-api-1.2-12.jar
jsf 简易教程..................
jsf-by-example-源码.rar
JSF导航文件如何设置实例解析 .rar
基于JSF的失物招领登记系统论文.doc
基于JSF与Hibernate的Web应用开发.caj
jsp pdf教程....................
本教程向 Java 程序员介绍如何使用 JSF 组件来构建具有高度交互性的部署在 Apache Geronimo 上的 Java EE 应用程序。本教程假定读者使用 Eclipse 集成开发环境(IDE)作为开发平台。
JSF将是J2EE5.0中所包含的web开发框架,这应该是第一个成为jcp标准,并且随j2eesdk一起发布的web框架,可以看出sun对它的期望很高。JSF最大的竞争对手是tapestry,是apache的产品,但是apache又弄出了个myfaces,是...