Struts2标签取值方法与范围访问

需积分: 16 0 下载量 87 浏览量 更新于2024-09-10 收藏 2KB TXT 举报
"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中,还是在更广泛的作用域内。开发者可以根据实际需求选择合适的方式来获取和显示数据。