<input   tpye="checkbox"   name="hobby"   value="1">a 
<input   tpye="checkbox"   name="hobby"   value="2">b
<input   tpye="checkbox"   name="hobby"   value="3">c
<input   tpye="checkbox"   name="hobby"   value="4">d 比如说选中了 abc这三个框,将数据拿到并拼成String s ="1,2,3"; 将s存放到数据库中,但是如果要做一个查询,使选中的信息对应的复选框被选中如何做? 我是这样做的:将String s="1,2,3"; 分割出来放到一个list中,然后将list方在requestScope范围内,在Jsp上用<c:forEach>对这个list遍历,然后判断出对应的 value值,让对应的被选中。但是结果是出现了3组相同的复选框,每一组有一个对应的复选框被选中,该如何做才能只出现一组复选框让以上的abc都被选中?  

解决方案 »

  1.   


    <html>
    <%
    String s = request.getAtrribute("s");//后台从数据库里取到的值
    String arr = s.split(",");
    List list = new ArrayList();
    for(int i=0;i<arr.length;i++){
        list.add(arr[i]);
    }
    %>
    <body>
    <input  tpye="checkbox"  name="hobby"  value="1" <%=(list.contants("1")>"checked":"")%>>a 
    <input  tpye="checkbox"  name="hobby"  value="2" <%=(list.contants("2")>"checked":"")%>>b 
    <input  tpye="checkbox"  name="hobby"  value="3" <%=(list.contants("3")>"checked":"")%>>c 
    <input  tpye="checkbox"  name="hobby"  value="4" <%=(list.contants("4")>"checked":"")%>>d
    </body>
    </html>
      

  2.   

    那个“>”是不是应该用“?“   还有就是contants不对,应该是contains ....
      

  3.   

    我用的是<c:forEach items="${requestScope.list} var="s">
             <c:if items="s=='1'">
                <input  tpye="checkbox"  name="hobby"  value="1" checked>a
             </c:if>
             <c:if items="s!='1'">
                <input  tpye="checkbox"  name="hobby"  value="1" unchecked>a
             </c:if>
             ....//每一个都是这样判断的,出现的结果就是list有几个数字就会出现几组相同的checkbox
          </c:forEach>
    结果就像这样:
    <input  tpye="checkbox"  name="hobby"  value="1" checked>a 
    <input  tpye="checkbox"  name="hobby"  value="2">b 
    <input  tpye="checkbox"  name="hobby"  value="3">c 
    <input  tpye="checkbox"  name="hobby"  value="4">d <input  tpye="checkbox"  name="hobby"  value="1">a 
    <input  tpye="checkbox"  name="hobby"  value="2" checked>b 
    <input  tpye="checkbox"  name="hobby"  value="3">c 
    <input  tpye="checkbox"  name="hobby"  value="4">d <input  tpye="checkbox"  name="hobby"  value="1">a 
    <input  tpye="checkbox"  name="hobby"  value="2">b 
    <input  tpye="checkbox"  name="hobby"  value="3" checked>c 
    <input  tpye="checkbox"  name="hobby"  value="4">d 
      

  4.   

       <c:set var="sum" value="0" />
    <c:forEach var="s" items="${requestScope.list }">
    <c:set var="sum" value="${sum + 1}" />
    <c:choose>
    <c:when test="${sum == '1' }"><c:set var="str" value="a"/></c:when>
    <c:when test="${sum == '2' }"><c:set var="str" value="b"/></c:when>
    <c:when test="${sum == '3' }"><c:set var="str" value="c"/></c:when>
    <c:when test="${sum == '4' }"><c:set var="str" value="d"/></c:when>
    </c:choose>
    <c:if test="${s == sum }"><input tpye="checkbox"  name="hobby"  value="${sum}" checked >${str }</input></c:if>
    <c:if test="${s != sum }"><input tpye="checkbox"  name="hobby"  value="${sum}" checked >${str }</input></c:if>
    </c:forEach>这样做应该可以做到你那种效果,有点麻烦,字符ASCII编码懒得查,要是多的话就不能一一给str付值了,只能循环用ASCII转了