使用 spring eval 标记并在 jsp 中调用 java 方法而不使用 scriptlet

using spring eval tag and call the java method in jsp without 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方法, 这意味着使用 Java 列表方法包含在 JSP.

所以我在 JSP 页面中这样尝试。 ${checkedList.contains('${myCode.codId }') }

但是没用。 我该怎么做才能解决这个问题?

感谢您的帮助。

祝你有愉快的一天:-)

我换个方式解决

在控制器中, 将对象列表更改为对象映射。

也就是说,我可以这样写代码

之前.

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

读起来比以前好多了