Struts2 - 传值
Struts2传值有几种方式:
1)URL parameter
例如配置代码:
<action name="login_*" class="com.my.action.LoginAction" method="{1}"> <result type="redirectAction" name="success">main?userName=${userName}&password=${password}</result> <result type="redirect" name="false">login</result> <result name="input">/pages/Login.jsp</result> </action>
其中:
main?userName=${userName}&password=${password}
这一句是当调用Action SUCCESS时会把原Action中的username和password两个属性以url parameter形式传给main action
当然,上面main action也可以这样写:
<result name="success" type="redirectAction"> <param name="actionName">main</param> <param name="userName">${userName}</param> <param name="password">${password}</param> </result>
2)request的attribute传值:
例如,可以在一个action中使用attribute传值:
HttpServletRequest request = ServletActionContext.getRequest();
request.setAttribute("userName", getUserName());
当然,先要import page:
import javax.servlet.http.HttpServletRequest; import org.apache.struts2.ServletActionContext;
ServletActionContext有好些方法,可以得到pageContext、request、session、application等对象来使用。
在Struts2 Action中需要调用Appcalition和Session,需要用到这个引用:
import com.opensymphony.xwork2.ActionContext;
调用方法如:
ActionContext.getContext().getSession().put("username", getUsername());
ActionContext.getContext().getApplication().put("username", getUsername());
如果需要在Action中调用request、response、pageContext,需要引用:
import org.apache.struts2.ServletActionContext;
调用方法:
ServletActionContext.getPageContext() ...
ServletActionContext.getRequest() ...
ServletActionContext.getResponse() ...