如何将Action
类变量值传递给Struts 2中的另一个Action
类?
我想在另一个动作类的查询变量中使用它。
答案 0 :(得分: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;
}
}
现在是会话中的用户,您可以从user
地图中的其他操作或JSP和session
对象获取会话。
public class InboxAction extends BaseAction {
@Override
public String execute() throws Exception {
User user = (User) getSession().get("user");
return SUCCESS;
}
}
答案 1 :(得分:0)
答案 2 :(得分:0)
如果您想将所有值发布到其他操作,请使用&#39;链接&#39;,否则请使用redirect-action并指定参数。