2

嗨,我在 struts.xml 中有类似的东西

   <action name="LoginAction" class="controller.LoginAction">
                <result name="error">/Error.jsp</result>
                <result name="success">/Wizard.jsp</result>
    </action>

编辑:

在操作中成功执行后execute,下一页具有使用请求范围访问的数据。我怎样才能在会话范围内存储相同的数据?

我读到该HttpServletRequest对象作为参数传递execute()给 Struts 操作中的方法,并且我始终可以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>

以这种方式使用会话也是最好的方法吗?我正在尝试让自己熟悉 struts 方法。

4

1 回答 1

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解释了其他使用方式。

SessionAware优于ActionContext. 以下是对此的一些讨论:

于 2012-06-12T13:02:36.983 回答