日期:2014-05-20  浏览次数:20637 次

struts2中如何把Action中的值,付给前台页面JSP表达式中?
在Action中,有一个已经写好get和set的变量aa,前台页面中有一个输出title的方法,这个方法是在表达式当中的,如<%PubTagLib.printSubTitle(aa);%> Action中的变量想要在前台页面中显示就必须用struts2的标签,但是如何把变量传到表达式中?
我想一个办法是用request,不知行不行,如果行的话,该如何在ACTION中将aa放在request?
除此之外还有没有别的办法?
请各路高手指教,谢谢

------解决方案--------------------
value="%{aa}"
------解决方案--------------------
用了struts2就不要用jsp表达式了吧
------解决方案--------------------
探讨
不行啊,是要在JSP表达式当中 <%PubTagLib.printSubTitle(%{aa});%> 无法用标签的

------解决方案--------------------
Java code

ValueStack vs=request.getParame("ValueStack");
//用valuestack来取,action传过来的都放再里面,具体怎么写我忘了,楼主去google  struts2 valuestack 或 jsp valuestack 应该就有了

------解决方案--------------------
requestScope.aa
------解决方案--------------------
com.opensymphony.xwork2.util.OgnlValueStack valueStack = (OgnlValueStack) request.getAttribute(ServletActionContext.STRUTS_VALUESTACK_KEY);

//其中ServletActionContext是org.apache.struts2.ServletActionContext,即: public static final String STRUTS_VALUESTACK_KEY = "struts.valueStack";

Object obj = iognlvstack_Stack.findValue("valName");
------解决方案--------------------
request.setAtrribut("value",aa);
------解决方案--------------------
因为你在action里已经实现了 aa的 get和set方法了.
其实你在页面上直接调用struts2的标签就行<s:property value="aa" />
------解决方案--------------------
El表达式${requestSope.xxx}

jsp表达

<%=request.getAttribute("xxx")%>


struts2标签
<s:property value="xxx" />

------解决方案--------------------
up
------解决方案--------------------
探讨
解决了,在Action里将aa赋好值,然后前台页面直接写 <%String aa = (String)request.getAttribute("aa");%>就可以得到Action里将aa的值
不过我不太明白,我在Action里也没有写request.setAttribute之类的代码,为什么前台就能直接request.getAttribute("aa")呢?难道说是struts2的机制里就隐含着setAttribute()了吗