我们知道Struts2会将Action中的属性存放到ValueStack对象中,在通过Action转发的页面中,我们可以通过Struts2 的标签<s:property/>来输出这些值,但是这样得到的值却仅限于输出显示,不能进行进一步的操作,那么我们应该怎样得到 ValueStack中的值又能对它进行其他操作呢?
首先,我们需要了解Struts2是将Action中的属性全部封装在一个叫做struts.valueStack的请求属性中,然后我们就可以通过下面的代码来获取这些值了:
Html代码
1. <%@ page import="com.opensymphony.xwork2.util.*"%>
2. <%
3. ValueStack vs = (ValueStack)request.getAttribute("struts.valueStack");
4. List someThing= (List)vs.findValue("someThing");
5. %>
<%@ page import="com.opensymphony.xwork2.util.*"%>
<%
ValueStack vs = (ValueStack)request.getAttribute("struts.valueStack");
List someThing= (List)vs.findValue("someThing");
%>
someThing是Action中属性值的名称。
分享到:
相关推荐
5. **视图呈现**:视图(如JSP、Freemarker等)通过OGNL表达式从ValueStack中获取数据,并显示在页面上。 **三、ValueStack的操作方法** 1. **压入对象**:`ValueStack.push(Object object)` 将对象压入栈顶,使其...
在Struts2框架中,OGNL被用来在Action类与JSP页面之间传递数据,通过简单的表达式可以方便地获取或设置对象属性。 2. **OGNL语法**:OGNL表达式通常以`.`操作符为核心,例如`user.name`表示获取名为`user`的对象的`...
3. **脚本元素**:JSP允许在页面中使用 `! %>` 和 `<script>` 标签来编写Java代码。`! %>` 用于声明变量和方法,而 `<script>` 可以包含Java代码块,这些代码在页面被请求时执行。 4. **JSP指令**:比如 `<%@ %>` ...
// 在JSP页面中获取并显示错误信息 String valueStack = (String) request.getAttribute("struts.valueStack"); // 假设valueStack中包含了所有错误信息 if (valueStack != null) { // 进一步处理valueStack中的...
通过Ognl(Object-Graph Navigation Language)表达式,我们可以直接在JSP页面中访问ValueStack中的任何对象和属性。例如,`<s:property value="#attr.actionProperty"/>`或`...
在 Struts2 中,OGNL 需要与 ValueStack 进行交互,以方便在 JSP 页面中直接通过 EL 方式访问 ValueStack 中的对象。ValueStack 是一个保存所有请求数据的对象栈,它包含了一个或多个根对象。 例如: - `${foo}` ...
例如,你可以使用`ActionContext.getContext().get("key")`来获取请求或会话中的值,而`ActionContext.getContext().getValueStack()`则可以获取ValueStack,它是Struts2中处理模型驱动的一个关键部分。 2. **...
在JSP页面中,可以直接通过EL表达式访问ValueStack中的对象属性,如`${foo}`表示获取栈中某个对象的"foo"属性。如果需要访问其他上下文中的对象,如ServletContext、HttpSession、HttpServletRequest的属性,就需要...
在Struts2框架中,OGNL表达式被广泛应用于视图层,比如在JSP页面中用来获取数据。OGNL表达式的语法简洁明了,例如: - **直接调用方法**:`xxx.sayHello()`。 - **访问静态方法和常量**:`@java.lang.String@format...
当一个Action执行完毕后,Struts2会自动将Action中的数据保存到`ValueStack`中,以便在页面上可以通过特定的方式获取这些数据。 - **`ActionContext`**:除了`ValueStack`之外,`ActionContext`也是Struts2中非常...
在JSP页面中,访问session、request、application等对象时,需要使用前缀`#`来指示Struts2不要从ValueStack中查找,例如`#session.infomation`。 OGNL表达式的语法非常灵活,支持`.`和`['']`两种方式访问对象属性。...
3. **ValueStack**:Struts2使用ValueStack来存储Action对象和其他值,使得在JSP页面可以直接通过OGNL(Object-Graph Navigation Language)表达式访问这些对象和值。 4. **OGNL表达式**:在JSP页面中,我们可以...
在JSP页面中获取并显示该值: ```jsp ``` 2. **访问不同作用域的数据**: 在Action中设置请求范围的数据: ```java ActionContext.getContext().getValueStack().set("test1", "lovejava1"); ``` 或者...
2. **使用EL表达式获取ValueStack中的数据**:通过EL表达式的搜索机制,可以在未找到相应域对象的值时从`ValueStack`中查找所需的值。 #### 四、Struts2中EL表达式的使用 在Struts2框架中,EL表达式的搜索顺序非常...
7. JSP页面从ValueStack中获取数据并展示,实现分页显示。 这个项目提供了关于如何在实际应用中集成Struts、DAO和Hibernate的实例,对于理解这些技术的协同工作以及在Java Web开发中实现分页功能具有很高的学习价值...
在这个例子中,当`execute`方法执行时,`key1`和`key2`被推入值栈,然后在JSP页面上可以通过OGNL表达式访问这些值。 **总结** 在Struts 2框架中,值栈和OGNL的使用大大简化了数据在模型、视图和控制器之间的传递,...
数据访问标签,如`<s:set>`和`s:get>`,用于在ValueStack中设置和获取值,实现数据的传递和操作。此外,Struts2还提供了Ajax标签,用于支持异步JavaScript和XML的交互,增强用户体验。 ValueStack是Struts2框架中的...
6. 视图层(如JSP)从ValueStack中获取数据,渲染输出。 三、Webwork2中的MVC模式 1. **Model**: 业务模型,包含业务对象和业务逻辑,与数据库交互,处理数据。 2. **View**: 视图,主要由JSP或其他模板技术组成...