当我们在Action设置了某个属性后,Struts2将这些属性值全部封装在一个叫做struts.valueStack的请求属性里,在jsp页面中输出需要的请求信息,我们可以通过request.getAttribute("struts.valueStack");来获取包含全部输出信息的ValueStack对象。
上面代码返回一个ValueStack对象,该对象封装全部的输出信息。该对象是Struts2使用的一个ValueStack对象,可以通过OGNL表达式非常方便的访问该对象封装的信息。
从数据结构上看,ValueStack有点类似于Map结构,但它比Map结构更强大(因为它可以根据表达式来查询)。Action所有的属性被封装到了ValueStack对象中,Action中的属性名可以理解为ValueStack中的value的名字。
大致了解了ValueStack对象结构之后,我们可以通过如下代码来获取Action设置的属性值。
假设Action中有一个名为userName的属性
<%
ValueStack vs=(ValueStack)request.getAttribute("struts.valueStack");
String userName=(String)vs.findValue("userName");
%>
输出Action中的userName属性:<%=userName%>