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 : |
||||
|
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" |
原文链接: 5.4 条件行为 5.4.1 if标签