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



posted @ 2014-12-15 11:44  99°的开水  阅读(317)  评论(0编辑  收藏  举报