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() ...