<c:choose>

本文探讨了JSP中c:choose标签的使用方法及其内部运作机制。通过具体示例,展示了如何根据不同条件选择执行不同的代码块,并讨论了在实际应用中遇到的特殊情况及解决思路。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

<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>之间的代码.
这是什么机制来的, 源码就不想看了. 还是用 : ? 运算符好了.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值