Result類型: 1.dispatcher(默認):服務器跳轉到結果頁面,jsp頁面或者html相當于<jsp:forWord> 2.redirect:重定向到一個頁面 3.chain(鏈條):forword到另外一個Action struts2API example:
<package name="public" extends="struts-default"> <!-- Chain creatAccount to login, using the default parameter --> <action name="createAccount" class="..."> <result type="chain">login</result> </action> 轉發到另外一個package中Action <action name="login" class="..."> <!-- Chain to another namespace --> <result type="chain"> <param name="actionName">dashboard</param> <param name="namespace">/secure</param> </result> </action> </package> <package name="secure" extends="struts-default" namespace="/secure"> <action name="dashboard" class="..."> <result>dashboard.jsp</result> </action> </package>
4.redirectAction:重定向到一個Action 5.freemarker 6.httpheader 7.stream(下載) 8.velocity 9.xslt 10.plaintext 11.tiles<global-results>全局結果集該package下的任意一個Action都能使用這個結果集 其他的package只要繼承了定義了全局結果集的package,也能使用該結果集
<package name="user" namespace="/user" extends="struts-default"> <global-results> <result name="mainpage">/main.jsp</result> </global-results> <action name="user" class="com.zr.struts2.action.UserAction"> <result name="success" >/user_success.jsp</result> <result name="error" >/user_error.jsp</result> </action> </package> <package name="admin" namespace="/admin" extends="user"> <action name="admin" class="com.zr.struts2.action.AdminAction"> <result name="admin">/admin.jsp</result> </action> </package>
動態的results:
<package name="user" namespace="/user" extends="struts-default"> <action name="user" class="com.zr.struts2.action.UserAction"> <result name="success">${r}</result> </action> </package> ${r}(專門用在struts2配置文件里面的ogln表達式) 從value stack中取出r的值
public class UserAction extends ActionSupport { (對于任何一個Action他對應的屬性都會放在Value Stack中,r和type會放在ValueStack中) PRivate int type; private String r; public String getR() { return r; } public void setR(String r) { this.r = r; } public int getType() { return type; } public void setType(int type) { this.type = type; } @Override public String execute() throws Exception { if (type == 1) r="/user_success.jsp"; if (type == 2) r="/user_error.jsp"; return "success"; } }帶參數的result:
<action name="user" class="com.zr.struts2.action.UserAction"> <result name="success" type="redirect">/user_success.jsp?t=${type}</result> </action> 在jsp頁面取出t: <s:property value="#parameters.t"/>(重定向ValueStack為null,在Stack Context里面取parameters的值) 如果type=dispatcher<s:property value="type"/>(轉發,直接在ValueStack里面取,所以只有重定向才需要傳遞參數) 補充:一個request請求共享一個ValueStack
新聞熱點
疑難解答