5.4 条件行为 5.4.1 if标签
5.4 条件行为
条件行为用于处理页面输出取决于特定输入值的情况,这在Java中是利用if、if...else和switch声明解决的。JSTL中执行条件行为的有4个标签,即if、choose、when和otherwise标签。
5.4.1 if标签
if标签是对某一个条件进行测试,假如结果为true,就处理它的body content。测试结果保存在一个Boolean对象中,并创建有界变量来引用这个Boolean对象。利用var属性和scope属性来定义有界变量的名称和范围。
if标签的属性
| 属性 | 类型 | 描述 |
|---|---|---|
test+ |
布尔 | 决定是否处理任何现有body content的测试条件 |
var |
字符串 | 引用测试条件值的有界变量名称;var的类型为Boolean |
scope |
字符串 | var定义的有界变量的范围 |
if标签 带标签体形式
第二种形式中使用了一个body content:
1 | <c:if test="testCondition [var="varName"] |
body content中是JSP代码,当测试条件的结果为true时,就会执行标签体例的JSP代码。
实例
例如,如果找到请求参数user且值为ken,并且找到请求参数password且值为blackcomb,以下if标签将显示“You logged in successfully:
1 | <!-- param为EL隐式对象 --> |
模拟else语句
为了模拟else,下面使用了两个if标签,并使用了相反的条件。例如,如果user和password参数的值为ken和blackcomb,以下代码片断将显示You logged in successfully,否则,将显示Login failed:
1 | <c:if test="${param.user=='ken' && |
if标签 没有标签体形式
1 | <c:if test="testCondition" var="varName" |
在这种情况下,var定义的有界对象一般是通过其他标签在同一个JSP中的后续阶段再进行测试。
实例
下面的if标签是测试user和password参数值是否分别为ken和blackcomb,并将结果保存在页面范围的变量loggedIn中。之后,利用一个EL表达式,如果loggedIn变量值为true,则显示You logged in successfully;如果loggedIn变量值为false,则显示Login failed:
1 | <c:if var="loggedIn" |