2016-08-03 226 views
0

:-)使用spring eval標籤並在jsp中調用java方法而不使用scriptlet

我有一個問題。 我想檢查我的複選框的狀態當myCode.id和checkedLists的代碼值相同時。

<c:forEach var="myCode" items="${myCodeList }" varStatus="status"> 
    <tr> 
    <th> 
     <input type="checkbox" id="myCode${status.index}" name="myCodes" /> 
    </th> 
    <td> 
     <textarea id="myContent${status.index}" name="myContents"></textarea> 
    </td> 
</th> 
</tr> 
</c:forEach> 

我折騰myCodeList和checkedList從我的控制器。 mycodeList是某些代碼列表的VO的列表。 而checkedList是我從列表視圖中檢查值的列表。

<c:forEach var="myCode" items="${myCodeList }" varStatus="status"> 
    <c:set var="myCodeFlag" value="false" 
    <tr> 
    <th> 
     <input type="checkbox" id="myCode${status.index}" name="myCodes" 
     <c:forEach var="checkedCode" items="${checkedList}"> 
     <c:if test="${checkedCode.codId eq myCode.codId}"> 
     checked="checked" 
     </c:if> 
     </c:forEach> 
     /> 
    </th> 
    <td> 
     <textarea id="myContent${status.index}" name="myContents" 
<c:if test="${myCodeFlag eq flase}">disabeld="disabled"</c:if>> 
     <c:forEach var="checkedCode" items="${checkedList}"> 
     <c:if test="${checkedCode.codId eq myCode.codId}"> 
     ${checkedCode.content} 
     </c:if> 
     </c:forEach> 
</textarea> 
    </td> 
</th> 
</tr> 
</c:forEach> 

它的工作原理與我想要的一樣。

但是,我的老闆告訴我,更改代碼更簡單。 使用spring eval標籤並調用java方法, 這意味着使用JSP中包含的Java Lists方法。

所以我在JSP頁面中嘗試這樣。 ${checkedList.contains('${myCode.codId }') }

但它不起作用。 我能做些什麼來解決這個問題?

感謝您的幫助。

祝你有美好的一天:-)

回答

0

我改變了解決它的方法。

在控制器, 改變對象的列表,以地圖的對象。

這意味着,我可以寫代碼就像這樣。

之前。

<c:forEach var="myCode" items="${myCodeList }" varStatus="status"> 
    <c:set var="myCodeFlag" value="false" 
    <tr> 
    <th> 
     <input type="checkbox" id="myCode${status.index}" name="myCodes" 
     <c:forEach var="checkedCode" items="${checkedList}"> 
     <c:if test="${checkedCode.codId eq myCode.codId}"> 
     checked="checked" 
     </c:if> 
     </c:forEach> 
     /> 
    </th> 
    <td> 
     <textarea id="myContent${status.index}" name="myContents" 
<c:if test="${myCodeFlag eq flase}">disabeld="disabled"</c:if>> 
     <c:forEach var="checkedCode" items="${checkedList}"> 
     <c:if test="${checkedCode.codId eq myCode.codId}"> 
     ${checkedCode.content} 
     </c:if> 
     </c:forEach> 
</textarea> 
    </td> 
</th> 
</tr> 
</c:forEach> 

之後。

<textarea id="myContent${status.index}" name="myContents" 
    <c:if test="${checkedCodeMap[checkCode.codValue].category.codId ne myCode.codId}">disabeld="disabled"</c:if>> 
      <c:if test="${checkedCodeMap[checkCode.codValue].category.codId ne myCode.codId}"> 
${checkedCodeMap[checkCode.codValue].content} 
      </c:if> 
    </textarea> 

這是比以前更好看。