本人的开发环境是:Jdk_1.6+MyEclipse7.5+Struts2+Tomcat7+SQL2005。问题:给角色赋于权限,在前台JSP页面有一系列从后台数据库获取到的权限复选框,点击提交后把选中复选框的值保存到角色权限表里,现在的问题是:为什么保存到角色权限表的permitcode是NULL.谢谢大家。
部分代码如下,
Action里的代码如下:
//给一角色添加上权限
public String add() throws Exception {
int =rolepermitdao.insertRolePermit(rolepermit);
if(>0) {
this.statusCode="200";
this.message="授权成功!";
this.callbackType="closeCurrent";
this.navTabId="warrant_list";
}else {
this.statusCode="300";
this.message="授权失败,请系统管理员联系!";
}
return "add";
}
权限表的Java Bean如下:
public class RolePermit implements Serializable {
  private String rolecode;             //角色编号
  private String[] permitcode;           //权限集合--数组
  private String re;
  
  public void setRolecode(String rolecode) {
    this.rolecode=rolecode;
  }
  public String getRolecode() {
    return rolecode;
  }
  
  public void setPermitcode(String[] permitcode) {
    this.permitcode=permitcode;
  }
  public String[] getPermitcode() {
  return permitcode;
  }
  
  public void setRe(String re) {
    this.re=re;
  }
  public String getRe() {
    return re;
  }
}
数据库操作代码如下:
public int insertRolePermit(RolePermit rolepermit) {
int =-1;
db=DBConnectionManager.getInstance();
con=db.getConnection("idb");
sql="insert into tb_Role_Permit values('"+rolepermit.getRolecode()+"','"+rolepermit.getPermitcode()+"','"+rolepermit.getRe()+"')";
//System.out.println(sql);
try {
ps=con.prepareStatement(sql);
=ps.executeUpdate();
}catch (SQLException ex) {
throw new RuntimeException(ex);
}finally {
freeCon();
}
return ;
}
前台Jsp的部分代码如下:
<form method="post" action="${warrantSave}" class="pageForm required-validate" onsubmit="return validateCallback(this, navTabAjaxDone)">
    <div class="pageFormContent" layoutH="150">
      <p><label>角色编号:</label><input type="text" name="rolepermit.rolecode" value="${warrantObject }" readonly="readonly"> </p>
      <p><label>备注:</label><s:textfield name="rolepermit.re" size="30" /></p>
      <c:forEach items="${permitList}" var="permit" >
       <label>
         <input type="checkbox" name="rolepermit.permitcode" value="${permit['permitcode']}" />${permit['re'] }        
       </label>
      </c:forEach>
    </div>
    <div class="formBar">
<label style="float:left"><input type="checkbox" class="checkboxCtrl" group="rolepermit.permitcode" />全选</label>
<ul>
<li><div class="button"><div class="buttonContent"><button type="button" class="checkboxCtrl" group="rolepermit.permitcode" selectType="invert">反选</button></div></div></li>
<li><div class="buttonActive"><div class="buttonContent"><button type="submit">提交</button></div></div></li>
</ul>
    </div>
  </form>
点击提交后无异常,但是查看后台数据库权限表里的permitcode值为NULL,烦请各位看看,为什么不能获取到复选框所提交的值,谢谢了。

解决方案 »

  1.   


    Bean : String[] permitcode; //权限集合--数组String[]?
    你的权限应该不是一个实体类吧。
    那你的表是怎么建的?怎样能对应数组?
      

  2.   

    string []数组与你的数据库应该对应不了吧
      

  3.   

    这种问题 你自己断点DEBUG 先看看action是否已经拿到了复选框的值
    然后一步一步跟踪
      

  4.   

    先firebug看看 到后台的数据是否正确
    再检查action中的数组名称是否和客户端过来的参数名称相同
      

  5.   

    用FireBug查看了
    FireBug中Post中的内容如下:
    参数application/x-www-form-urlencoded
    rolepermit.permitcode A021
    rolepermit.permitcode A022
    rolepermit.permitcode A023
    rolepermit.permitcode A024
    rolepermit.permitcode A025
    rolepermit.permitcode A026
    rolepermit.re 147
    rolepermit.rolecode A99
    源代码
    rolepermit.rolecode=A99&rolepermit.re=147&rolepermit.permitcode=A021&rolepermit.permitcode=A022&rolepermit.permitcode=A023&rolepermit.permitcode=A024&rolepermit.permitcode=A025&rolepermit.permitcode=A026
    响应中的内容如下:
    {"callbackType":"closeCurrent","forwardUrl":null,"message":"授权成功!","navTabId":"warrant_list","rolePermit":{"permitcode":null,"re":null,"rolecode":"A99"},"statusCode":"200"}
    JSON的内容如下:
    callbackType
    "closeCurrent"
     

    forwardUrl
    null
     

    message
    "授权成功!"
     

    navTabId
    "warrant_list"
     

    rolePermit
    Object { rolecode="A99"}
     

    permitcode
    null
     

    re
    null
     

    rolecode
    "A99"
     

    statusCode
    "200"
    呵呵,谢谢大家的回复了,从POST来看数据还是过来了,可不知道为什么获取不到呢!
      

  6.   

    我的角色权限表的结构如下:rolecode(varchar)-角色编号,permitcode(varchar)-角色权限,re-备注
      

  7.   

    我在Action里定义了如下代码:
    private RolePermit rolepermit;
    public void setRolepermit(RolePermit rolepermit) {
    this.rolepermit=rolepermit;
    }
    public RolePermit getRolePermit() {
    return rolepermit;
    }
      

  8.   

    insert into tb_Role_Permit values('"+rolepermit.getRolecode()+"','"+rolepermit.getPermitcode()+"','"+rolepermit.getRe()+"')这个是什么东东 Permitcode不是数组吗 能这样搞吗 
      

  9.   

    我觉得也有问题呀,可偶不知道在Struts2中,Action里如何获取页面提交上来的值呀。
      

  10.   

    我告诉你怎么搞,搞好了你得把分给我,我真穷的没分了,你在ACTION里用for循环,把String数组里的数据一个一个取出来,循环插入表就可以了,前提是你String数组里有数据,如果页面传的参数没有解析到数组,你就调用String的split方法解析页面传来的参数,生成数组,循环插入
      

  11.   

    rolepermit.getPermitcode()+"
    这句改下
      

  12.   


    前台页面 不变 ,后台用List取吧 不要用数组