【问题标题】:No End Tag in JSP taglibsJSP 标记库中没有结束标记
【发布时间】:2012-06-28 18:29:24
【问题描述】:
<%@ 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 编译器抱怨没有嵌套输入 type="checkbox" 的&lt;c:when&gt; 的结束标记...我可以知道我做错了什么吗?我尝试使用&lt;c:if&gt;,它也不起作用,编译器也抱怨没有结束标签。

编辑:如果我没有像下面那样嵌套输入类型和 set var,那么它可以工作......但它无法完成我原来的逻辑......

    <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 代码,以免我的架构师丧命,哈哈。任何建议都会很乐意接受以保留我提出的逻辑。

【问题讨论】:

  • 为什么要混合两种完全不同的 JSP 编写方式?使用 taglibs/EL 或 oldschool scriptlets,不要同时使用。
  • 我不得不以这种方式编写 jsp 代码,因为我的架构师很痛苦,哈哈。也因为系统就是这样设置来查询数据库的

标签: html jsp tags


【解决方案1】:

摆脱所有那些 scriptlet(老派的 &lt;% %&gt; 东西)。它们不能与标签库很好地混合。 JSTL 属性只接受 EL 表达式。

例如,假设您事先已经完成了request.setAttribute("results", results),这在设计上需要在 servlet 中完成,但也可以在 JSP 顶部的 scriptlet 中完成。 p>

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

这种方式的可读性也更好。

另见:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-04-28
    • 1970-01-01
    • 2012-04-01
    • 2016-10-15
    • 1970-01-01
    • 2012-11-12
    • 2018-06-16
    • 2018-05-05
    相关资源
    最近更新 更多