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里面完成

解决方案 »

  1.   

    想了一下,想不出来好的办法。只能在Action里,我做不到。
      

  2.   

    还是不太明白你的意思.写下思路希望能对你有帮助.把“显示选框“和”是否选中“两件事分开处理。
    1.显示所有选框。
    2.利用传递过来的值判断哪个选框需要选中.(用javascript实现onload)
      

  3.   

    JSP里定义个HIDDEN然后在javascript里逐个检查复选框,将选中的值方入一个字符串数组中,然后将数组交给HIDDEN中定义的属性这样在ACTION中就可以从HIDDEN中拿到这些值,大体思想这样,代码自己写把,应该能解决你的问题
      

  4.   

    <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}>
      

  5.   

    <logic:iterate id="a" name="String" property="value">
    这重循环改成值判断,循环的话就会出现你说的重复的复选框,但是这里只是显示1次判断的话,可以在Action里写,hm{小的hmson},小的hmson里就放你要判断的内容,
    比如:
    hmSon={fengkuang="疯狂",wenzhong="稳重",langman="浪漫",haodou="好斗"}
    hmSon1={fengkuang="疯狂",wenzhong="稳重",langman="浪漫",haodou=""}
    然后,就可以用键值来对应复选框了.