如何将Action
类变量值传递给Action
Struts 2 中的另一个类?
我想在另一个动作类中使用在查询变量中检索到的那个。
如何将Action
类变量值传递给Action
Struts 2 中的另一个类?
我想在另一个动作类中使用在查询变量中检索到的那个。
动作可以通过不同的方式相互通信,以及它们在不同的线程中运行并且不共享动作上下文。最流行的方法是通过请求或在 URL 中传递参数,XWork 转换器将在 OGNL 的帮助下将它们转换为动作属性。
但我认为这样做的目的LoginAction
是通过用户的凭据对用户进行身份验证(email, username, password)
,并将这些信息保存在会话映射中。它是可以在动作之间共享的公共资源。要获得可用于操作和其他操作的会话映射,他们应该实现SessionAware
. 它将帮助 Struts 将会话映射注入到 action 属性中。如果您想在应用程序的许多操作中使用会话,那么不要在每个操作中实现此接口,您可以创建一个基本操作。
public class BaseAction extends ActionSupport implements SessionAware {
private Map<String, Object> session;
public setSession(Map<String, Object> session){
this.session = session;
}
public Map<String, Object> getSession(){
return session;
}
}
然后操作将扩展基本操作以获得会话兼容性。
public class LoginAction extends BaseAction {
@Override
public String execute() throws Exception {
User user = getUserService().findBy(username, email, password);
getSession().put("user", user);
return SUCCESS;
}
}
现在会话中的用户,您可以从其他操作或 JSP 中获取会话,并user
从session
地图中获取对象。
public class InboxAction extends BaseAction {
@Override
public String execute() throws Exception {
User user = (User) getSession().get("user");
return SUCCESS;
}
}
如果要将所有值发布到另一个操作,请使用“链”,否则请使用重定向操作并指定参数。