用户操作
[即时聊天] [发私信] [加为好友]
allinID:leeshaoqun
143562次访问,排名559好友0人,关注者2
leeshaoqun的文章
原创 92 篇
翻译 1 篇
转载 136 篇
评论 36 篇
allin的公告
Allin的博客
老照片
最近评论
qqq:www
mldstk:wow gold,
mldstk:wow gold,
alex.xu:漂亮 ,说实话 比官方文档写的好
lkuzhi:是啊,能不能找个能用的过来啊
文章分类
收藏
    相册
    ♡韩国可爱的小童星 ♡
    korea
    韩佳人
    金泰熙
    宋惠乔
    宋慧乔车太贤《我和我的女友》
    微笑美女——韩孝珠
    Hibernate
    Hibernate中文网
    Hibernate官方网站
    php
    Haohappy的专栏--PHP5研究中心
    Spring
    Raible's Wiki -- AppFuse
    Spring 开发参考手册
    SpringFramework中文论坛
    SpringFramework官方站点
    个人博客
    greengnn's space
    开源
    java开源大全(RSS)
    存档
    软件项目交易
    订阅我的博客
    XML聚合  FeedSky
    订阅到鲜果
    订阅到Google
    订阅到抓虾
    订阅到BlogLines
    订阅到Yahoo
    订阅到GouGou
    订阅到飞鸽
    订阅到Rojo
    订阅到newsgator
    订阅到netvibes

    转载 第八章 Result Types 收藏

    新一篇: 第九章 拦截器 | 旧一篇: 第七章 (类型转换)Type Convertion

    一个提交到服务器的处理通常可以分为两个阶段,第一个阶段查询服务器状态(查询或者更新数据库),第二个阶段选择一个合适的结果页面其返回给用户(这里要讲的Result的内容)。
     
    Struts2提供了对不同种类返回结果的支持,常见的有JSP,FreeMarker,Velocity等。
    Struts2支持的不同类型的返回结果为:
    名字
    说明
    Chain Result
    用来处理Action链
    Dispatcher Result
    用来转向页面,通常处理JSP
    FreeMarker Result
    处理FreeMarker模板
    HttpHeader Result
    用来控制特殊的Http行为
    Redirect Result
    重定向到一个URL
    Redirect Action Result
    重定向到一个Action
    Stream Result
    向浏览器发送InputSream对象,通常用来处理文件下载
    Velocity Result
    处理Velocity模板
    XLS Result
    处理XML/XLST模板
    PlainText Result
    显示原始文件内容,例如文件源代码
    S2PLUGINS:Tiles Result
    结合Tile使用
    另外第三方的Result类型还包括JasperReports Plugin,专门用来处理JasperReport类型的报表输出。
     
    在struts-default.xml文件中已经有了对于所有类型Result的定义:
    <result-types>
        <result-type name="chain"
                 class="com.opensymphony.xwork2.ActionChainResult"/>
        <result-type name="dispatcher"
                 class="org.apache.struts2.dispatcher.ServletDispatcherResult"
                 default="true"/>
        <result-type name="freemarker"
                 class="org.apache.struts2.views.freemarker.FreemarkerResult"/>
        <result-type name="httpheader"
                 class="org.apache.struts2.dispatcher.HttpHeaderResult"/>
        <result-type name="redirect"
                 class="org.apache.struts2.dispatcher.ServletRedirectResult"/>
        <result-type name="redirectAction"
                 class="org.apache.struts2.dispatcher.ServletActionRedirectResult"/>
        <result-type name="stream"
                 class="org.apache.struts2.dispatcher.StreamResult"/>
        <result-type name="velocity"
                 class="org.apache.struts2.dispatcher.VelocityResult"/>
        <result-type name="xslt"
                 class="org.apache.struts2.views.xslt.XSLTResult"/>
        <result-type name="plainText"
                 class="org.apache.struts2.dispatcher.PlainTextResult" />
        <!-- Deprecated name form scheduled for removal in Struts 2.1.0.
             The camelCase versions are preferred. See ww-1707 -->
        <result-type name="redirect-action"
                 class="org.apache.struts2.dispatcher.ServletActionRedirectResult"/>
        <result-type name="plaintext"
                 class="org.apache.struts2.dispatcher.PlainTextResult" />
    </result-types>
     
    从上述代码中可以看出在不指定Result类型的时候使用dispatcher类型。
     
    定义一个Result值,
    <result name="success" type="dispatcher">
        <param name="location">/ThankYou.jsp</param>
    </result>
    由于type默认值是dispatcher,所以这里不需要定义,另外name的默认值为success所以这里也不需要定义。
    上述代码可以简写为:
    <result>
        <param name="location">/ThankYou.jsp</param>
    </result>
    另外location参数也可以直接卸载result标签内部,所以上述代码的最简单的写法为:
    <result>/ThankYou.jsp</result>
     
    我们也可以定义多个不同的Result
    <action name="Hello">
     <result>/hello/Result.jsp</result>
     <result name="error">/hello/Error.jsp</result>
     <result name="input">/hello/Input.jsp</result>
    </action>
    上 述代码的含义为,名字为Hello的Action有三个返回结果,并且都是dispatcher类型(默认类型),这三个返回值的名字分别为 success(默认值),error,input,对应的页面的路径分别为/hello/Result.jsp,/hello/Error.jsp, /hello/Input.jsp。
     
    有些时候我们需要一个定义在全局的Result,这个时候我们可以在package内部定义全局的Result,例如:
    <global-results>
     <result name="error">/Error.jsp</result>
     <result name="invalid.token">/Error.jsp</result>
     <result name="login" type="redirect-action">Logon!input</result>
    </global-results>
     
    动态返回结果
    有些时候,只有当Action执行完璧的时候我们才知道要返回哪个结果,这个时候我们可以在Action内部定义一个属性,这个属性用来存储Action执行完璧之后的Result值,例如:
    private String nextAction;
     
    public String getNextAction() {
        return nextAction;
    }
     
    在strutx.xml配置文件中,我们可以使用${nextAction}来引用到Action中的属性,通过${nextAction}表示的内容来动态的返回结果,例如:
    <action name="fragment" class="FragmentAction">
     <result name="next" type="redirect-action">${nextAction}</result>
    </action>
     
    上述Action的execute方法返回next的时候,还需要根据nextAction的属性来判断具体定位到哪个Action。
     
     

    发表于 @ 2007年12月05日 20:24:00|评论(loading...)|编辑

    新一篇: 第九章 拦截器 | 旧一篇: 第七章 (类型转换)Type Convertion

    评论:没有评论。

    发表评论  


    登录
    Csdn Blog version 3.1a
    Copyright © allin