`
zengshaotao
  • 浏览: 791683 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

struts2的result属性

 
阅读更多

在action的指定方法执行完毕后总会返回一个字符串,struts2根据返回的字符串去action的配置中的result去找匹配的名字,根据配置执行下一步的操作。

 


    在ActionSupport基类中定义了五个标准的返回值

 


  String SUCCESS       = "success";

  String NONE     = "none";

  String ERROR    = "error";

String INPUT    = "input";String LOGIN    = "login";
当然我们可以自己随意定义返回的名字

 


        result元素有两个用处,首先它提供一个逻辑上名字。一个action可以单纯的返回success或input而不用理会之后的具体细节。第二,result元素提供type属性,可以不仅仅的返回一个jsp页面,而可以实现更多有意思的功能。

    每个包可以有自己的默认result type,当一个result没指定type时将使用默认。正常情况下默认的result type为dispatcher。如果一个包继承另一个包,这个包可以实现自己的默认result也可以继承父包的默认result。手动指定一个默认的result如下


<result-types>
   <result-type name="dispatcher" default="true"
                class="org.apache.struts2.dispatcher.ServletDispatcherResult" />
</result-types>


同时,一个result的name属性也有默认值success。最平常的情况下,一个result如下

 

<result>
    /ThankYou.jsp
</result>

一个action可以有多个不同的result

 

<action name="Hello">
    <result>/hello/Result.jsp</result>
    <result name="error">/hello/Error.jsp</result>
    <result name="input">/hello/Input.jsp</result>
</action>
全局result

    有些时候,一些result是可以为所有的action服务的,例如出错页面的result,登陆页面的result

我们可以定义一些全局result供同一个包的所有actoin共享。注意首先struts2会先搜索局部result,如果没找到则会去全局result寻找匹配的result

 

<global-results>
    <result name="error">/Error.jsp</result>
    <result name="invalid.token">/Error.jsp</result>
    <result name="login" type="redirectAction">Logon!input</result>
</global-results>

result 的动态参数配置

   有些时候我们需要从一个action转向另一个action,但是参数却是运行才能知道,可以用一下的方法实现。下面用一个例子来说明

 

<struts>
....
   <package name="somePackage" namespace="/myNamespace" extends="struts-default">
      <action name="myAction" class="com.project.MyAction">
         <result name="success" type="redirectAction">otherAction?id=${id}</result>
         <result name="back" type="redirect">${redirectURL}</result>
      </action>

      <action name="otherAction" class="com.project.MyOtherAction">
         ...
      </action>     
   </package>
....
</struts>


在action中必须有id,redirectURL属性以及它们的get方法

 

public class MyAction extends ActionSupport {
   private int id;
   private String redirectURL;
   ...
   public String execute() {
       ...
      if (someCondition) {
         this.redirectURL = "/the/target/page.action";
         return "back";
      }

      this.id = 123;
      return SUCCESS;
   }

   public int getId() { return this.id; }
   public void setId(int id) { this.id = id; }
   public String getRedirectURL() { return this.redirectURL; }
   public void setRedirectURL(String redirectURL){this.redirectURL=redirectURL;}
   ...
}

如果返回success的话将会转到/<app-prefix>/myNamespace/otherAction.action?id=123

 


当一个result有多个参数时可以通过param子属性指定,在后面会有例子

 

 

 

result 的types

 


result有许多不同的types,用来实现不同的功能,struts2默认的types有如下几个

 


Dispatcher 转到一个视图页面,通常为jsp页面。这个是默认的type值。

 

<result>
    /ThankYou.jsp
</result>

Stream 将原始数据字节发送给浏览器,通常用于下载文件

 


contentType 发送给浏览器的流的mime-type (默认text/plain).

contentLength- 流的长度 (便于浏览器显示下载进度).

contentDispostion- 设置响应头contentDispostion的值(默认inline)

这个我不太清楚是什么意思,Google了一下也没什么好的解释

InputName action提供的输入流的属性名称(默认inputStream).

bufferSize从输入流写入到输出流的缓存大小(默认1024字节).

 

<result name="success" type="stream">
  <param name="contentType">image/jpeg</param>
  <param name="inputName">imageStream</param>
  <param name="bufferSize">1024</param>
</result>

PlainText 一般用来显示一个jsp或html页面的原始内容

 

<action name="displayJspRawContent" >
  <result type="plaintext">/myJspFile.jsp</result>
</action>

redirectAction 定向到另一个action 觉得没什么太大的用处,举个例子留作参考吧

 

<package name="public" extends="struts-default">
    <action name="login" class="...">
        <!-- Redirect to another namespace -->
        <result type="redirect-action">
            <param name="actionName">dashboard</param>
            <param name="namespace">/secure</param>
        </result>
    </action>
</package>

<package name="secure" extends="struts-default" namespace="/secure">
    <-- Redirect to an action in the same namespace -->
    <action name="dashboard" class="...">
        <result>dashboard.jsp</result>
        <result name="error" type="redirect-action">error</result>
    </action>

    <action name="error" class="...">
        <result>error.jsp</result>
    </action>
</package>

<package name="passingRequestParameters" extends="struts-default" namespace="/passingRequestParameters">
   <-- Pass parameters (reportType, width and height) -->
   <!--
   The redirect-action url generated will be :
   /genReport/generateReport.action?reportType=piewidth=100height=100
   -->
   <action name="gatherReportInfo" class="...">
      <result name="showReportResult" type="redirect-action">
         <param name="actionName">generateReport</param>
         <param name="namespace">/genReport</param>
         <param name="reportType">pie</param>
         <param name="width">100</param>
         <param name="height">100</param>
      </result>
   </action>
</package>

 

感觉type里就这几个用处多一些,其他的几个就不写了。以后有用的时候另外再写

 

补充:name属性是对请求的去向做一个 配置,而type是对返回的结果进行的配置。


本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/zhiweiv/archive/2008/09/17/2943169.aspx

分享到:
评论

相关推荐

    struts2 result配置详解

    Struts2 Result 配置详解 Struts2 框架中 Result 配置是一种非常重要的配置,它直接影响着应用程序的执行结果。Result 配置通常用于定义 Action 的执行结果,例如将结果.redirect 到一个新的 URL,或者将结果....

    struts2 result type 介绍

    在Struts2中,Result Type是由`struts-default.xml`配置文件中的`&lt;package&gt;`元素的`defaultResultType`属性指定的,默认情况下,这个值通常是“dispatcher”,意味着Action完成后会使用Dispatcher Result来渲染JSP...

    struts2中result类型之redirect

    在Struts2框架中,`Result`类型是动作(Action)执行后的一种处理方式,它定义了动作执行完后页面跳转或者数据处理的行为。`Redirect`是`Result`类型中的一种,它涉及到Web应用程序中的URL重定向概念,对用户浏览器...

    Struts2 result和type

    ### Struts2中的Result与Type详解 #### 一、引言 在Struts2框架中,`Result`和`Type`是两个非常重要的概念。它们主要用于控制Action执行完毕后页面的跳转方式以及如何处理Action返回的结果。通过合理配置`Result`与...

    Struts2属性文件详解

    ### Struts2属性文件详解 #### struts.configuration 该属性用于指定加载Struts 2配置文件的配置文件管理器,默认值为`org.apache.struts2.config.DefaultConfiguration`,这是Struts 2默认的配置文件管理器。若...

    struts2的result标签使用

    在Struts2中,`Result`标签是核心组件之一,用于定义动作执行后如何跳转到相应的视图。让我们深入探讨一下`Result`标签的使用以及在Struts2框架中的作用。 ### 1. Struts2框架概述 Struts2框架基于MVC设计模式,...

    struts2属性文件struts.xml的配置

    ### Struts2属性文件struts.xml的配置 在Java Web开发中,Struts2框架作为MVC模式的一种实现,提供了一种简洁的方式来构建应用程序。其中,`struts.xml`是Struts2的核心配置文件,用于定义项目的包、常量、拦截器等...

    struts2中result类型之redirectAction

    在struts.xml或action类的注解中,你可以设置`result`元素的`type`属性为`redirectAction`来配置重定向结果。例如: ```xml &lt;result type="redirectAction"&gt; &lt;param name="actionName"&gt;anotherAction ...

    struts2jar包

    1. **struts2-core.jar**:这是Struts2的核心库,包含了框架的主要组件,如Action、Result、Interceptor等。它定义了请求处理的流程,提供了ActionContext、ValueStack等关键对象。 2. **xwork-core.jar**:XWork是...

    Struts2--为Action的属性注入值

    为Action的属性注入值是Struts2的一个关键特性,使得我们可以方便地从请求参数中获取数据并绑定到Action实例上,以便后续的业务处理。 这个特性主要依赖于Struts2的OGNL(Object-Graph Navigation Language)表达式...

    Struts2接口文档

    Struts2的核心组件包括Action、Result、Interceptor(拦截器)等,这些组件通过特定的接口进行交互。Action接口定义了处理用户请求的方法,如execute(),开发者通常会自定义Action类来实现业务逻辑。Result接口则...

    留言板留言板struts2留言板struts2

    8. **表单处理**:Struts2提供了强大的表单处理能力,可以自动绑定请求参数到Action的属性,实现数据验证,并将错误信息回显到页面。 9. **异常处理**:Struts2通过全局异常映射(Global Exception Mapping)来统一...

    Struts2视频教程

    ### Struts2核心知识点解析 #### 一、Struts2框架概述 - **定义与特点**:Struts2是一款基于MVC(Model-View-Controller)设计模式的Java Web应用程序框架,它继承了Struts1的优点,同时在设计上更加灵活、易用,...

    struts2全部的jar包

    Struts2允许开发者使用XML或注解来配置Action、Result和其他元素。这使得配置更为灵活,减少了硬编码。 4. **拦截器(Interceptors)**: 拦截器是Struts2的一大特色,它们可以插入到Action调用链中,实现如日志...

    struts2 全局异常提示定义属性文件使用

    这篇博文主要探讨的是如何在Struts2中设置和使用全局异常提示属性文件。 首先,我们要理解Struts2的异常处理机制。当控制器或业务逻辑抛出异常时,Struts2框架会捕获这些异常并根据配置决定如何响应。默认情况下,...

    struts2简单例子

    Struts2是一个强大的Java EE应用程序框架,用于构建MVC(模型-视图-控制器)架构的Web应用。这个“struts2简单例子”是初学者理解Struts2工作原理和核心概念的一个很好的起点。让我们深入探讨一下Struts2的基础知识...

    struts2+json

    当Action执行完毕后,可以返回一个JSON结果类型,Struts2会自动将Action的属性转换为JSON格式并返回给前端。 接着,我们讨论AJAX。AJAX是一种在不重新加载整个网页的情况下,能够更新部分网页的技术。在本资源中,...

    Struts2的视频学习代码

    Struts2支持多种Result类型,如JSP、FreeMarker、Stream等。配置在Action配置文件中,它定义了Action执行完成后如何跳转到下一个视图。 4. **OGNL(Object-Graph Navigation Language)**:OGNL是Struts2中的默认...

    struts2 API帮助文档

    Struts2是一个强大的Java web应用程序框架,用于构建MVC(模型-视图-控制器)架构的应用。这个API帮助文档是开发者在使用Struts2框架时的重要参考资料,它详细阐述了框架的各种组件、类库和方法,有助于理解并有效...

    马士兵Struts2笔记2013

    投影是Struts2中将对象属性映射到视图组件的方式,允许在JSP中直接使用对象的属性而无需显式地调用getter方法。 以上就是"马士兵Struts2笔记2013"中涉及的主要知识点,这些内容涵盖了Struts2的基础配置、数据处理...

Global site tag (gtag.js) - Google Analytics