0
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<td colspan="1" width="100">
<c:choose>
  <c:when>
    <c:choose>
       <c:when></c:when><c:otherwise>
    <c:when test="<%=\"F\".equals(result[1]) %>">
     <c:set var="checked"><%=result[0].equals("Y")%></c:set>
     <input type="checkbox" id="<%="ABC"+"$"+rows%>" name="<%="ABC"+"$"+rows%>" value="<%=String.valueOf(rows)%>" ${checked ? 'checked' : ''} onclick="someFunction(this)"/>
    </c:when></c:otherwise>
    </c:choose>
  </c:when>    
  <c:otherwise>
  </c:otherwise>
</c:choose>
</td>

何らかの理由で、JSPコンパイラは、input type = "checkbox"をネストするための終了タグがないと文句を言い<c:when>ます...私が間違っていることを知っていますか?使用<c:if>してみましたが、どちらも機能しません。コンパイラも終了タグを要求しません。

編集:以下のように入力タイプとセット変数をネストしない場合、それは機能します...しかし、元のロジックを達成できません。

    <c:otherwise>
            <c:when test="<%=\"F\".equals(result[1]) %>">
            </c:when>
            <c:set var="checked"><%=result[0].equals("Y")%></c:set>
             <input type="checkbox" id="<%="ABC"+"$"+rows%>" name="<%="ABC"+"$"+rows%>" value="<%=String.valueOf(rows)%>" ${checked ? 'checked' : ''} onclick="someFunction(this)"/>
    </c:otherwise>

編集2:私は私の建築家からの死の痛みについてこの方法でjspをコーディングする必要があります笑。私の提案した論理を維持するために、どんなアドバイスも喜んで受け入れられます。

4

1 に答える 1

1

これらすべてのスクリプトレット(昔ながらの<% %>もの)を取り除くだけです。それらは taglibs とうまく混ざりません。JSTL 属性は EL 式のみを取ります。

たとえば、request.setAttribute("results", results)技術的にはサーブレットで行う必要がある設計を事前に行っていると仮定しますが、JSP の上位にあるスクリプトレットで行うこともできます。

<c:forEach items="${results}" var="result">
  ...
  <td colspan="1" width="100">
    <c:choose>
      <c:when>
        <c:choose>
          <c:when></c:when>
          <c:otherwise>
            <c:when test="${result[1] == 'F'}">
              <c:set var="checked">${result[0] == 'Y'}</c:set>
              <input type="checkbox" id="ABC$${rows}" name="ABC$${rows}" value="${rows}" ${checked ? 'checked' : ''} onclick="someFunction(this)" />
            </c:when>
          </c:otherwise>
        </c:choose>
      </c:when>    
      <c:otherwise>
      </c:otherwise>
    </c:choose>
  </td>
  ...
</c:forEach>

この方法ですぐに読みやすくなります。

以下も参照してください。

于 2012-06-28T18:40:11.190 に答える