1.jsp页面代码:
 <form action="userUpdateaction.action" method="POST">
  <table width="50%" border="0" align="center" id="updUserTable" class="UserTable">
  <tr>
    <td width="40%" align="center" valign="middle" class="updFont">姓名:</td>
    <td><label>
      <input name="name" type="text" id="name" value="<%=name %>" />
    </label></td>
  </tr>
  <tr>
    <td align="center" valign="middle">&nbsp;</td>
    <td>&nbsp;</td>
  </tr>
  <tr>
    <td align="center" valign="middle" class="updFont">登录账号:</td>
    <td><input name="userId" type="text" id="userName" value="<%=userId %>" readonly="readonly"/></td>
  </tr>
  <tr>
    <td align="center" valign="middle">&nbsp;</td>
    <td>&nbsp;</td>
  </tr>
  <tr>
    <td align="center" valign="middle" class="updFont">密码:</td>
    <td><input name="userPWD" type="text" id="userPWD" value="<%=userPWD %>" /></td>
  </tr>
  <tr>
    <td align="center" valign="middle">&nbsp;</td>
    <td>&nbsp;</td>
  </tr>
  <tr>
    <td align="center" valign="middle" class="updFont">权限:</td>
    <td valign="middle" class="updFont"><label >
      <input type="checkbox" name="staQury" value="1" id="checkBox1"/>
    统计查询
</label></td>
  </tr>
  <tr>
    <td align="center" valign="middle">&nbsp;</td>
    <td valign="middle" class="updFont">
    <input type="checkbox" name="verPublish" value="1" id="checkBox2"/>
版本发布<
/td>
  </tr>
  <tr>
    <td align="center" valign="middle">&nbsp;</td>
    <td valign="middle" class="updFont">
    <input type="checkbox" name="perManager" value="1" id="checkBox3"/>
权限管理
</td>
  </tr>
  <tr>
    <td align="center" valign="middle">&nbsp;</td>
    <td valign="middle" class="updFont">
    <input type="checkbox" name="msgPush" value="1" id="checkBox4"/>
消息推送<
/td>
  </tr>
  <tr>
    <td align="center" valign="middle">&nbsp;</td>
    <td>&nbsp;</td>
  </tr>
  <tr>
    <td align="center" valign="middle">
    <input  type="submit" value="保存" /></td>
    <td><input type="reset" value="取消" /></td>
  </tr>
</table>
</form>
2.Action代码:public class UserAction {
private String userId; //用户账号
private String userPWD;  //用户密码
private String name;      //用户姓名

private String staQury="";   //统计查询权限
private String verPublish="";   //版本发布
private String perManager="";   //权限管理
private String msgPush="";   //消息推送

private IUsersBiz iuserBiz;  //user service层接口
private Users loginUser;
private Users operUser;
private List listUser;   //user集合
private String resultTip; //信息提示
/**
 * 更新用户信息
 * @return 返回相应页面
 * @throws UnsupportedEncodingException 
 */
public String userUpdate() {
this.resultTip=""; //初始化resultTip
String userPer="";  //定义用户权限
//验证用户已经登录后
if(true==ToolsUtil.isLoginAuth()){
//查询用户是否有权限管理权限
if(true==ToolsUtil.isPermissionAuth(this.loginUser,ParaUtil._PERMISIONMANAGER)){
userPer=this.staQury.equals("")?"0":"1"+"-"+verPublish.equals("")?"0":"1"+"-"+perManager+"-"+msgPush;
System.out.println("查询统计权限============="+this.staQury);
System.out.println("版本发布权限============="+this.verPublish);
System.out.println("权限管理权限============="+this.perManager);
System.out.println("消息推送权限============="+this.msgPush);

if(null !=this.userId && !"".equals(this.userId)){
this.operUser=iuserBiz.findByUserId(this.userId);
}
if(this.operUser !=null){
this.operUser.setUserId(this.userId);
this.operUser.setName(this.name);
this.operUser.setPassword(userPWD);
this.operUser.setPermission(userPer);
iuserBiz.updateUser(this.operUser);//修改用户信息
this.setResultTip("用户修改成功!");
findAll();//查询更改用户后的用户列表
}
if(getOperUser()==null){
this.setResultTip("您要更新的用户不存在!");
return "updError";
}
}else{
this.setResultTip("您没有修改用户的权限,请联系管理员!");
return "updError";
}
}else{
this.setResultTip("请先登录!");
return "login";
}
return "updError";
}


/**
 * 查询所有用户
 * @return 返回查询结果
 */
public String findAll(){
//this.resultTip="";
//登录验证
if(false == ToolsUtil.isLoginAuth()){
this.resultTip="请先登录!";
return "login";
}
//验证用户已经登录后
if(true==ToolsUtil.isLoginAuth()){
//查询用户是否有权限管理权限
if(true==ToolsUtil.isPermissionAuth(this.loginUser,ParaUtil._PERMISIONMANAGER)){
//查询当前用户
//this.setListUser(iuserBiz.findAll());
this.listUser=iuserBiz.findAll();
if(null != this.getListUser()){
Map request=(Map) ActionContext.getContext().get("request");
request.put("listUser", this.listUser);
return "findAllSuc";
}else{
this.setResultTip("未查询到用户!");
return "findAllErr";
}
}else{
this.setResultTip("没有此权限,请联系管理员!");
return "findAllErr";
}
}
return "findAllErr";
}
...get,set方法省略
}
3.问题描述:
当修改用户权限时,第一次选择给用户所有的四个权限四个复选框全部选中(查询统计,版本发布,权限管理,消息推送)此时System的打印结果是:
查询统计权限=============1
版本发布权限=============1
权限管理权限=============1
消息推送权限=============1

修改完成后紧接着再修改用户权限这一次不给用户任何权限(即四个复选框都不选),可悲剧的是这一次的打印结果还是:
查询统计权限=============1
版本发布权限=============1
权限管理权限=============1
消息推送权限=============1
求解答???

解决方案 »

  1.   

    按你这个套路,恐怕得把复选框改为双单选框,也即:0:无 1:有。否则复选框没有选中时,POST中的数据根本不会包含该复选框信息,服务器端也就不会发生set动作。
      

  2.   

    我的想法是如果复选框没有被选中,那么在action中接收到的它所对应的值就是null,此时就不给其当前未选中的复选框所对应的权限。
      

  3.   

    但Action是单例,你这么做咋也看不出可操作性啊。