2016-03-25 2 views
4

Я пытаюсь установить флажок на основе значений, возвращаемых из базы данных. До сих пор я получаю правильные значения «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> 

Loop перед тем флажком:

<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

У меня есть флажок, я хочу, чтобы он был либо отмечен, либо отмечен флажком, исходя из того, какое значение я получаю из своей базы данных. Поэтому, если значение «Y», я хочу, чтобы флажок был проверен, иначе он не будет отмечен. Это все будет происходить при загрузке страницы, а не в форме submit. –

+0

Чехбокс проверен или снят флажок зависит от используемого значения поля, но вы либо не использовали тег, либо значение входящего, поэтому значение не будет отображаться, и оно не будет проверено. –

ответ

0

это немного старый, так что я полагаю, что нашли решение, но если нет:

Вы Propably необходимо проверить флаг одним из detail вар из цикл forEach, 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" : ""} 
     /> 

Проверенные атрибуты не нуждаются в значении, просто чтобы присутствовать или нет.

Я не могу проверить его сейчас, если есть ошибка, и я забыл проверить его tonigth, спасибо, чтобы уведомить меня. :) (Если эта строка присутствует, я забыл;))

Смежные вопросы