【发布时间】: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" 的<c:when> 的结束标记...我可以知道我做错了什么吗?我尝试使用<c:if>,它也不起作用,编译器也抱怨没有结束标签。
编辑:如果我没有像下面那样嵌套输入类型和 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 代码,因为我的架构师很痛苦,哈哈。也因为系统就是这样设置来查询数据库的