Struts2标签取值方法与范围访问
"Struts标签取值方式主要涉及的是在Struts2框架中如何通过不同的标签来访问和显示Action上下文中的属性值,包括valueStack中的属性、session和application范围内的属性,以及JSP页面中不同作用域的变量。" 在Struts2框架中,展示数据经常使用`s:property`标签和`s:textfield`标签。以下是对这两个标签取值方式的详细说明: 1. 使用`s:property`标签取值: - 当Action的valueStack中存在该属性时,可以直接使用属性名。例如,如果有一个名为`person`的Action对象,并且它有一个`name`属性,可以这样显示其值: ```jsp <s:property value="person.name" /> ``` - 如果属性不在Action的valueStack中,但存在于session或application范围内,需要使用`#`或`#attr.`前缀。例如,如果`company`对象存储在session中,可以这样获取其`name`属性: ```jsp <s:property value="#company.name" /> 或 <s:property value="#attr.company.name" /> ``` 2. 使用`s:textfield`标签取值: - `s:textfield`主要用于表单输入,其`value`属性可以设置为Action中的属性名或者表达式。同样,如果`person`对象包含`name`属性: ```jsp <s:textfield name="person.name" value="person.name" /> // value 直接表示 person.name <s:textfield name="person.name" value="%{person.name}" /> // 使用表达式语言获取person.name ``` - 如果需要获取`company`对象在session中的`name`属性,可以这样写: ```jsp <s:textfield name="person.company.name" value="%{#company.name}" /> <s:textfield name="person.company.name" value="%{#attr.company.name}" /> ``` 3. 在JSP页面中,可以通过EL(Expression Language)表达式来访问request、session和application作用域的变量: - 访问application作用域的变量:`${applicationScope.counter}` - 访问session作用域的变量:`${sessionScope.counter}` - 访问request作用域的变量:`${requestScope.counter}` 此外,还可以在Java代码中通过ActionContext获取这些作用域的变量。例如,获取application作用域的`counter`变量: ```java ActionContext ctx = ActionContext.getContext(); ctx.getApplication().put("counter", new Integer(1)); ``` 然后在JSP中通过 `${applicationScope.counter}` 就能访问到这个变量。 Struts2提供了灵活的方式来访问和展示Action中的属性,无论它们是在valueStack中,还是在更广泛的作用域内。开发者可以根据实际需求选择合适的方式来获取和显示数据。
通过<s:property value="" />取值
当Action的valueStack中有该属性的值时,只需直接使用该属性的名字即可;
当Action的valueStack中没有该属性的值时,比如在session,application范围中的属性值时,需要加#或者#attr.;
例子:
假设某Action中有person成员变量,在application中存在company属性
那么我们可以通过以下方法取值:
<s:property value="person.name" />
<s:property value="#person.name" />
<s:property value="company.name" /> //无法取到,因为company不在action的valueStack中
<s:property value="#company.name" />
2.标签取值方式二
在任意的<s:/>标签内使用%{}来取值
当Action的valueStack中有该属性的值时,只需直接使用该属性的名字即可;
当Action的valueStack中没有该属性的值时,比如在session,application范围中的属性值时,需要加#或者#attr.;
例子:
假设某Action中有person成员变量,在application中存在company属性
<s:textfield name="person.name" value="person.name" /> //错误,value会直接显示person.name字样
<s:textfield name="person.name" value="%{person.name}" />
<s:textfield name="person.company.name" value="%{#company.name}" />
<s:textfield name="person.company.name" value="%{#attr.company.name}" />
3.获取JSP页面的request,session,application中的属性
在页面中可以这样获取:
下载后可阅读完整内容,剩余2页未读,立即下载
- 粉丝: 191
- 资源: 2
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- C++标准程序库:权威指南
- Java解惑:奇数判断误区与改进方法
- C++编程必读:20种设计模式详解与实战
- LM3S8962微控制器数据手册
- 51单片机C语言实战教程:从入门到精通
- Spring3.0权威指南:JavaEE6实战
- Win32多线程程序设计详解
- Lucene2.9.1开发全攻略:从环境配置到索引创建
- 内存虚拟硬盘技术:提升电脑速度的秘密武器
- Java操作数据库:保存与显示图片到数据库及页面
- ISO14001:2004环境管理体系要求详解
- ShopExV4.8二次开发详解
- 企业形象与产品推广一站式网站建设技术方案揭秘
- Shopex二次开发:触发器与控制器重定向技术详解
- FPGA开发实战指南:创新设计与进阶技巧
- ShopExV4.8二次开发入门:解决升级问题与功能扩展