我正在尝试根据数据库返回的值来检查复选框。到目前为止,我得到了正确的“Y”或“N”值到我的控制器层,但复选框没有被检查/取消选中。我尝试了以下但是它不起作用,我认为测试场景出了问题。
<td class="normalTD " width="4%" style="white-space: nowrap" align="left" >
<c:choose>
<c:when test="detail[${loop.index}].flag eq 'Y'">
<input type="checkbox" path="detail[${loop.index}].flag" id="detail[${loop.index}].flag" checked="checked" />
</c:when>
<c:otherwise>
<input type="checkbox" path="detail[${loop.index}].flag" id="detail[${loop.index}].flag" checked="" />
</c:otherwise>
</c:choose>
</td>
复选框前循环:
<c:set var="detail" value="${commandObj.detail}" scope="page" />
<c:if test="${!empty commandObj.detail}">
<c:forEach items="${commandObj.detail}" var="detail" varStatus="loop">
<c:if test="${!empty detail.cd}">
答案 0 :(得分:0)
它有点旧,所以我想你找到了解决方案,但如果没有:
您可能需要检查来自forEach循环的detail
var的标志,detail
不是commandObj.detail
,而是此列表/数组中的实例。您应该将commandObj.detail
重命名为commandObj.details
以区分实例和集合;)
此外,您应该使用三元条件来获得更易读的代码。条件很简单。
<c:forEach items="${commandObj.detail}" var="detail" varStatus="loop">
<c:if test="${!empty detail.cd}">
<input type="checkbox"
path="detail[${loop.index}].flag"
id="detail[${loop.index}].flag"
${"detail.flag eq 'Y'" ? "checked" : ""}
/>
已检查的属性不需要值,只是为了存在与否。
我现在无法测试,如果有错误,我忘了检查它,感谢通知我。 :) (如果这条线存在,我忘了;))