Struts2 <s:if>标签使用详解与示例
需积分: 50 72 浏览量
更新于2024-09-19
收藏 2KB TXT 举报
"本文主要介绍Struts2框架中`s:if`标签的使用方法和示例,通过OGNL表达式进行条件判断。"
在Struts2框架中,`<s:if>`标签用于进行条件判断,它允许开发者根据变量的值来决定是否执行特定的代码块。`<s:if>`标签是基于OGNL(Object-Graph Navigation Language)表达式进行工作的,OGNL是Struts2中强大的数据访问和表达式语言。
一、OGNL与ValueStack
OGNL是Struts2的核心部分,它用来获取和设置Action上下文中的属性值。ValueStack是Struts2中处理请求数据的一种机制,它是一个对象栈,将Action实例及其属性、拦截器返回的对象等压入栈中,方便在视图层访问。
二、JSP与OGNL
在JSP页面中,通常使用OGNL来访问Action中的属性。例如,要获取`person`对象的`address`属性的`ip`字段,JSTL表达式写法是`${person.address.ip}`,而在Struts2中,使用OGNL表达式则写作`#person.address.ip`。
三、`<s:if>`标签的使用
1. 基本用法:`<s:if test="expression">...<s:if>`
`expression`是OGNL表达式,用于判断条件。例如,检查变量`china`的值是否等于`china`:
```
<s:set name='china' value='china'/>
<s:if test="${china=='china'}">show</s:if>
<s:else>not show</s:else>
```
如果`china`等于`china`,则显示`show`,否则显示`not show`。
2. 数值比较:例如,判断变量`count`是否大于0:
```
<s:set name="count" value="99"/>
<s:if test="${count>0}">bigger than 0</s:if>
<s:else>not bigger than 0</s:else>
```
当`count`大于0时,显示`bigger than 0`,否则显示`not bigger than 0`。
四、使用`s:iterator`与`s:if`
当需要遍历集合并进行条件判断时,可以结合`s:iterator`和`s:if`标签使用。例如,遍历一个名为`label`的List,并判断每个`Attribu`对象的`attrValueId`是否不等于0:
```
<s:iterator id="id" value="label">
<s:if test="%{#id.attrValueId!=0}">
<s:property value="#id.attrValue"/>
<s:property value="#id.countAll"/><s:property value="#id.countRequest"/>
</s:if>
<s:else>
<s:property value="#id.attrValue"/>
</s:else>
</s:iterator>
```
这段代码会显示`attrValueId`不为0的`Attribu`对象的`attrValue`,以及`countAll`和`countRequest`。
五、检查请求参数或JavaBean属性
1. 检查请求参数是否存在:如检查`request`域中的`price`属性是否为空或小于等于0:
```
<s:if test="request.price==null||request.price<=0">
</s:if>
```
2. 检查JavaBean属性:如果JavaBean的属性`aTransactionSummaryBean`不为空,可以这样判断:
```
<s:if test="%{aTransactionSummaryBean!=null}">
</s:if>
```
六、逻辑操作符与条件组合
`s:if`标签支持逻辑操作符,如`&&`(与),`||`(或),`!`(非)。例如,判断`isShowAll`属性为`Y`或者`n`时:
```
<s:if test='%{isShowAll=="Y"||isShowAll=="n"}'>
</s:if>
```
总结,Struts2的`s:if`标签提供了灵活的条件判断能力,结合OGNL,可以实现对Action属性、请求参数、集合元素等的复杂逻辑判断,极大地简化了JSP页面中的条件控制逻辑。
150 浏览量
458 浏览量
528 浏览量
151 浏览量
2023-06-03 上传
在struts2 2.3.15.1版本中将jsp页面中的<c:if test="${empty pageFinder.data }"> <td colspan=13 align="center” height="25"xfont color="red"没有查询到相关记录</f</c:if> <s:iterator value="%{pageFinder.data}" var="rehs” status="status"><s:set var="index”value="#status getIndex()"/> 这段代码中的<s:iterator value="%{pageFinder.data}"改为<s:iterator value="${pageFinder.data}"系统会报does not accept any expressions这个错误,是什么原因? 142 浏览量 131 浏览量 175 浏览量 点击了解资源详情 点击了解资源详情
jl58585588 -
粉丝: 0
最新资源
-
Eldrick Tiger Woods主题新标签页插件:4K壁纸与特色功能
-
OpenGL基础教程:实现OpenGL的HelloWorld
-
探索工厂游戏设计:因子游戏开发解析
-
银行家算法实现与Python爬虫技术深入探究
-
掌握Elasticsearch核心与进阶技巧第二版
-
LeetCode交互式编程挑战:算法与数据结构练习
-
FlexViewer 3.0 源代码解析与ArcGIS集成技术
-
打造优雅的Web仪表板:TechGYO与Highcharts技术实现
-
Spring3.2结合ehcache进行接口测试技术解析
-
探索中国交通标志CTSDB数据集训练集11的文件结构
-
Ubuntu Kylin下Linux 0.11 GCC5编译及Bochs运行指南
-
LeetCode交互式编码挑战: 提升算法与数据结构技能
-
SuperRss:增强Omeka网站的RSS功能插件
-
智能优化方法在多领域应用的介绍与分析
-
篮球爱好者必备!个性化新标签页壁纸-crx插件
-
RabbitMQ基础备忘与安装备忘录指南
142 浏览量
131 浏览量
175 浏览量
点击了解资源详情
点击了解资源详情
![](https://profile-avatar.csdnimg.cn/421845bb282949388aacff76b36668e3_jl58585588.jpg!1)
jl58585588
- 粉丝: 0
最新资源
- Eldrick Tiger Woods主题新标签页插件:4K壁纸与特色功能
- OpenGL基础教程:实现OpenGL的HelloWorld
- 探索工厂游戏设计:因子游戏开发解析
- 银行家算法实现与Python爬虫技术深入探究
- 掌握Elasticsearch核心与进阶技巧第二版
- LeetCode交互式编程挑战:算法与数据结构练习
- FlexViewer 3.0 源代码解析与ArcGIS集成技术
- 打造优雅的Web仪表板:TechGYO与Highcharts技术实现
- Spring3.2结合ehcache进行接口测试技术解析
- 探索中国交通标志CTSDB数据集训练集11的文件结构
- Ubuntu Kylin下Linux 0.11 GCC5编译及Bochs运行指南
- LeetCode交互式编码挑战: 提升算法与数据结构技能
- SuperRss:增强Omeka网站的RSS功能插件
- 智能优化方法在多领域应用的介绍与分析
- 篮球爱好者必备!个性化新标签页壁纸-crx插件
- RabbitMQ基础备忘与安装备忘录指南