关于ActionContext.getContext()取得的值是什么,和struts2如何获取request,session,appliaction作用域
今天做struts时发现了一个bug。
有个tea对象,该对象包含id,name等属性,由于项目的需要,我希望把它存入到request作用域里,查阅资料后网上有人说是通过ActionContext.getContext().put("tea“, tea);的方式可以实现存入request作用域的效果。
但是实际发现当我在jsp页面上写下这样语句取得request域里tea的id:<s:property value="#request.tea.id"/>,实际结果为空。
为什么会这样呢?再次查阅多方资料后,发现其实ActionContext.getContext()其实上获得的是ValueStack,而非我们想象中的request作用域,因此以上语句得不到我们想要的结果。
下面给出struts2种获取valuestack,request,session,appliaction作用域的方法:
package com.hcj.action.database.admin; import java.util.Map; import com.opensymphony.xwork2.ActionContext; import com.opensymphony.xwork2.ActionSupport; public class Test extends ActionSupport { private ActionContext context; private Map request; private Map session; private Map application; public ActionContext getContext() { return context; } public void setContext(ActionContext context) { this.context = context; } public Map getRequest() { return request; } public void setRequest(Map request) { this.request = request; } public Map getSession() { return session; } public void setSession(Map session) { this.session = session; } public Map getApplication() { return application; } public void setApplication(Map application) { this.application = application; } @Override public String execute() throws Exception { this.context = ActionContext.getContext(); this.request = (Map)this.context.get("request"); this.session = this.context.getSession(); this.application = this.context.getApplication(); this.context.put("contenx", "我是valueStack"); this.request.put("request", "我是request"); this.session.put("session", "我是session"); this.application.put("application", "我是application"); return SUCCESS; } }
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。