<c:choose>

操作的语法
<c:choose>
<c:when test="expression">
body content
</c:when>
<c:when test="expression">
body content
</c:when>
...
<c:otherwise>
body content
</c:otherwise>
</c:choose>

注意:每个要测试的条件都由相应的 <c:when> 标记来表示,至少要有一个 <c:when> 标记。只会处理第一个其 test 值为 true 的 <c:when> 标记体内的内容。如果没有一个 <c:when> 测试返回 true ,那么会处理 <c:otherwise> 标记的主体内容。注:尽管如此, <c:otherwise> 标记却是可选的; <c:choose> 标记至多可有一个嵌套的 <c:otherwise> 标记.

<----------------------------------------------------------------------->
<c:choose>
<c:when test="${opreateType == 'add'}">
<c:set var="url" value="${ctx}/temp/add.do"></c:set>
<c:set var="z" value="5"></c:set>
</c:when>
<c:when test="${opreateType == 'add'}">
<c:set var="url" value="${ctx}/temp/update.do"></c:set>
</c:when>
</c:choose>

上述代码会调用2次getOpreateType(). 但是奇怪的是:即使第一次<c:when>的test为true, 仍然会调用一次getOpreateType()(即第二个<c:when>的test, 这里我设置2个测试条件一样, 经过调试设置断点显示的运行此时). 不过, 即使第二次<c:when>的test也为true,但是却不执行第二个<c:when></c:when>之间的代码.
这是什么机制来的, 源码就不想看了. 还是用 : ? 运算符好了.
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章