本人的开发环境是: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,烦请各位看看,为什么不能获取到复选框所提交的值,谢谢了。
部分代码如下,
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,烦请各位看看,为什么不能获取到复选框所提交的值,谢谢了。
解决方案 »
- 问大家一个用apache poi读取excel文件的问题
- 初学者的疑惑
- myeclipse配置tomcat成功后的webapp目录下有问题
- Hibernate 更新问题急!!!!
- 把CSDN的XLST文件缩水了一下,网络速度实在太慢了,只好用FlashGet下载XML文件下来看了,XML文件第二行改一下,再用缩水后的XSLT
- 在javabean中替换字符串
- 请教一个有关java配置的问题
- 为什么总是部署不成功呢,是jboss配置不对吧?
- jdbc for sqlServer2000
- 有状态sessionbean,里为什么会出现这种情况啊?(对hibernate的操作总失败)
- struts2框架的传值问题???
- 好像是bean 的id不能命名不能以/开始,要怎么解决?
Bean : String[] permitcode; //权限集合--数组String[]?
你的权限应该不是一个实体类吧。
那你的表是怎么建的?怎样能对应数组?
然后一步一步跟踪
再检查action中的数组名称是否和客户端过来的参数名称相同
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来看数据还是过来了,可不知道为什么获取不到呢!
private RolePermit rolepermit;
public void setRolepermit(RolePermit rolepermit) {
this.rolepermit=rolepermit;
}
public RolePermit getRolePermit() {
return rolepermit;
}
这句改下
前台页面 不变 ,后台用List取吧 不要用数组