Struts2 <s:if>标签使用详解与示例
需积分: 34 82 浏览量
更新于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页面中的条件控制逻辑。
2009-04-10 上传
2018-03-26 上传
2011-11-22 上传
点击了解资源详情
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这个错误,是什么原因? 2023-06-07 上传 2020-10-27 上传 2019-04-05 上传 点击了解资源详情 点击了解资源详情 jl58585588 -
粉丝: 0
- 资源: 22
最新资源
-
Fisher Iris Setosa数据的主成分分析及可视化- Matlab实现
-
深入理解JavaScript类与面向对象编程
-
Argspect-0.0.1版本Python包发布与使用说明
-
OpenNetAdmin v09.07.15 PHP项目源码下载
-
掌握Node.js: 构建高性能Web服务器与应用程序
-
Matlab矢量绘图工具:polarG函数使用详解
-
实现Vue.js中PDF文件的签名显示功能
-
开源项目PSPSolver:资源约束调度问题求解器库
-
探索vwru系统:大众的虚拟现实招聘平台
-
深入理解cJSON:案例与源文件解析
-
多边形扩展算法在MATLAB中的应用与实现
-
用React类组件创建迷你待办事项列表指南
-
Python库setuptools-58.5.3助力高效开发
-
fmfiles工具:在MATLAB中查找丢失文件并列出错误
-
老枪二级域名系统PHP源码简易版发布
-
探索DOSGUI开源库:C/C++图形界面开发新篇章
2023-06-07 上传
2020-10-27 上传
2019-04-05 上传
点击了解资源详情
点击了解资源详情
jl58585588
- 粉丝: 0
- 资源: 22
最新资源
- Fisher Iris Setosa数据的主成分分析及可视化- Matlab实现
- 深入理解JavaScript类与面向对象编程
- Argspect-0.0.1版本Python包发布与使用说明
- OpenNetAdmin v09.07.15 PHP项目源码下载
- 掌握Node.js: 构建高性能Web服务器与应用程序
- Matlab矢量绘图工具:polarG函数使用详解
- 实现Vue.js中PDF文件的签名显示功能
- 开源项目PSPSolver:资源约束调度问题求解器库
- 探索vwru系统:大众的虚拟现实招聘平台
- 深入理解cJSON:案例与源文件解析
- 多边形扩展算法在MATLAB中的应用与实现
- 用React类组件创建迷你待办事项列表指南
- Python库setuptools-58.5.3助力高效开发
- fmfiles工具:在MATLAB中查找丢失文件并列出错误
- 老枪二级域名系统PHP源码简易版发布
- 探索DOSGUI开源库:C/C++图形界面开发新篇章