JSP的复选框问题。望各位牛人解决。
struts代码如下:
public ActionForward view1(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response){
Integer id = new Integer(request.getParameter( "userid "));
UserInfo1 user = new UserInfo1();
user = (UserInfo1)usermanger.createQuery( "from UserInfo1 as q where q.userInfo.userId=:loginId ").setInteger( "loginId ",id).uniqueResult();
//取得表中含,的字段
String ss = user.getIlikeEat();
String ss1 = user.getIfeeli().substring(0);
String ss2 = user.getMySports().substring(0);
String ss3 = user.getMfSuperority().substring(0);
String ss4 = user.getFavSite().substring(0);
String ss5 = user.getInterestTopic().substring(0);
String ss6 = user.getFindPartner().substring(0);
String ss7 = user.getThinkAlotOf().substring(0);
String ss8 = user.getFamRelat().substring(0);
//将字段进行处理
String[] aa = ss.substring(0).split( ", ");
String[] aa1 = ss1.substring(0).split( ", ");
String[] aa2 = ss2.substring(0).split( ", ");
String[] aa3 = ss3.substring(0).split( ", ");
String[] aa4 = ss4.substring(0).split( ", ");
String[] aa5 = ss5.substring(0).split( ", ");
String[] aa6 = ss6.substring(0).split( ", ");
String[] aa7 = ss7.substring(0).split( ", ");
String[] aa8 = ss8.substring(0).split( ", ");
HashMap hm = new HashMap();
//放到集合中
hm.put( "aa ", aa);
hm.put( "aa1 ", aa1);
hm.put( "aa2 ", aa2);
hm.put( "aa3 ", aa3);
hm.put( "aa4 ", aa4);
hm.put( "aa5 ", aa5);
hm.put( "aa6 ", aa6);
hm.put( "aa7 ", aa7);
hm.put( "aa8 ", aa8);
System.out.print(hm.size()+ "=00000000000000000 ");
//绑定在request当中
request.setAttribute( "hm ", hm);
JSP页面代码如下
<body>
<logic:iterate id= "String " collection= "${hm} ">
<logic:iterate id= "a " name= "String " property= "value ">
<td> <input name= "fengkuang " type= "checkbox " id= "fengkuang " value= "疯狂 " <c:if test= "${a eq '疯狂 '} "> checked= 'true ' </c:if> >
疯狂 </td>
<td> <input name= "wenzhong " type= "checkbox " id= "wenzhong " value= "稳重 " <c:if test= "${a} "> </c:if> >
稳重 </td>
<td> <input name= "langman " type= "checkbox " id= "langman " value= "浪漫 " <c:if test= "${a} "> </c:if> >
浪漫 </td>
<td> <input name= "haodou " type= "checkbox " id= "haodou " value= "好斗 " <c:if test= "${a} "> </c:if> >
好斗 </td>
</tr>
</logic:iterate>
</logic:iterate>
<tr>
</body>
现在问题主要是出现在页面当中。因为传过来的值是个集合,集合里面有数组。那么我页面上面用struts标签进行了嵌套迭代。这时候测试页面上面可以显示迭代后的值。那么现在我就要利用这些值在页面上进行复选框的判断,如果值有相对应的复选框,那么就打上钩,如果没有,则不打钩,但是选项还是要显示出来。那么现在页面上用此代码出现的结果就是出现了N多重复的选框,而且并没有打钩。那么就请教各位高手该怎么去解决。前提是页面上不要出现 <%%> ,一切都在action里面完成
[解决办法]
想了一下,想不出来好的办法。只能在Action里,我做不到。
[解决办法]
还是不太明白你的意思.写下思路希望能对你有帮助.
把“显示选框“和”是否选中“两件事分开处理。
1.显示所有选框。
2.利用传递过来的值判断哪个选框需要选中.(用javascript实现onload)
[解决办法]
JSP里定义个HIDDEN然后在javascript里逐个检查复选框,将选中的值方入一个字符串数组中,然后将数组交给HIDDEN中定义的属性这样在ACTION中就可以从HIDDEN中拿到这些值,大体思想这样,代码自己写把,应该能解决你的问题
[解决办法]
<c:set var= "chk "/>
<c:forEach var= "map " items= "hm ">
<c:if test= "${map.value== '疯狂 '} ">
<c:set var= "chk " value= "checked " />
</c:if>
</c:forEach>
<input name= "fengkuang " type= "checkbox " id= "fengkuang " value= "疯狂 " ${chk}>
[解决办法]
同一个操作提交了两遍
查询和新增都提交了吧
[解决办法]
<logic:iterate id= "a " name= "String " property= "value ">
这重循环改成值判断,循环的话就会出现你说的重复的复选框,但是这里只是显示1次
判断的话,可以在Action里写,hm{小的hmson},小的hmson里就放你要判断的内容,
比如:
hmSon={fengkuang= "疯狂 ",wenzhong= "稳重 ",langman= "浪漫 ",haodou= "好斗 "}
hmSon1={fengkuang= "疯狂 ",wenzhong= "稳重 ",langman= "浪漫 ",haodou= " "}
然后,就可以用键值来对应复选框了.