首页 > 代码库 > Struts2 Result

Struts2 Result

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="http://www.mamicode.com/#parameters.t"/>(重定向ValueStack为null,在Stack Context里面取parameters的值)
        如果type=dispatcher<s:property value="http://www.mamicode.com/type"/>(转发,直接在ValueStack里面取,所以只有重定向才需要传递参数)
        补充:一个request请求共享一个ValueStack



Struts2 Result