嗨我在struts.xml中有这样的东西
<action name="LoginAction" class="controller.LoginAction">
<result name="error">/Error.jsp</result>
<result name="success">/Wizard.jsp</result>
</action>
编辑:
在操作中成功执行execute
后,下一页将包含使用请求范围访问的数据。如何在会话范围中存储相同的数据呢?
我读到HttpServletRequest
对象作为参数传递给Struts操作中的execute()
方法,我总是可以使用HttpSession
检索request.getSession()
对象并将数据附加到它。
所以如果我在controller.LoginAction
public String execute(HttpServletRequest req) {
...
}
我是否必须更改struts.xml
?将execute
添加为参数时,不会调用HttpServletRequest
。
<action name="LoginAction" class="controller.LoginAction">
<result name="error">/Error.jsp</result>
<result name="success">/Wizard.jsp</result>
</action>
这也是使用session这种方式的最佳方法吗?我试图用struts方法熟悉自己。
答案 0 :(得分:3)
您可以实施SessionAware界面:
public class LoginAction extends ActionSupport implements SessionAware {
private Map session;
public String execute() {
session.put("key", "value");
// Plus any additional action code
}
// Plus setter (and optionally getter) for session map.
}
使用ActionContext
的替代方式解释为here。
SessionAware
优于ActionContext
。以下是对此的一些讨论: