--- j alex <[EMAIL PROTECTED]> wrote: > HttpServletRequest request = ServletActionContext.getRequest(); > HttpSession session = request.getSession(true); > if (null != request.getParameter("param1")) > session.setAttribute("attr1" , true); > else > session.setAttribute("attr1" , false); > > This works, but we now have references to HttpServletRequest and > HttpSession > which goes against the S2 "POJO" action / testability benefits etc. (even > though i may not write a TestCase at all) > > What's the best way to do this, so that the Action remains independent of > http ?
There are several ways to do this, depending on your needs. Request parameters are set on your actions if you have JavaBean-style properties exposed via names the same as the parameter name. In the above example you could have a String property named "param1" with its associated setter, setParam1(). Then you don't have to do *anything*; it's just set (assuming you're using the default interceptor stack). This is pretty basic S2 functionality, so you might want to check out the tutorials and guides on the S2 wiki [1,2]. You can also access the request or session parameter maps by implementing the ParameterAware or SessionAware interfaces [3,4]. You can also access the request or session parameter maps via the ActionContext class using the getParameters() and getSession() methods, avoiding all references to Servlet Spec-specific classes [5]. The S2 wiki and the JavaDocs are your friends. Dave [1] S2 Tutorials: http://struts.apache.org/2.x/docs/tutorials.html [2] S2 Guides: http://struts.apache.org/2.x/docs/guides.html [3] ParameterAware:http://struts.apache.org/2.0.11/struts2-core/apidocs/org/apache/struts2/interceptor/ParameterAware.html [4] SessionAware: http://struts.apache.org/2.0.11/struts2-core/apidocs/org/apache/struts2/interceptor/SessionAware.html [5] ActionContext: http://struts.apache.org/2.0.11/struts2-core/apidocs/com/opensymphony/xwork2/ActionContext.html --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]