`

Result Types(转载)

    博客分类:
  • SSH
阅读更多

一个提交到服务器的处理通常可以分为两个阶段,第一个阶段查询服务器状态(查询或者更新数据库),第二个阶段选择一个合适的结果页面其返回给用户(这里要讲的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。
分享到:
评论

相关推荐

    struts2 result配置详解

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

    ResultTypes.jl:Julia的结果类型-类似于Nullables for Exceptions

    在Julia编程语言中,`ResultTypes.jl`是一个库,它提供了类似于`Nullables`的概念,但专门针对异常处理。这个库的核心思想是引入一种结构化的方式,以优雅地处理可能失败的操作,而不是仅仅抛出异常。让我们深入探讨...

    struts2 result type 介绍

    打开这个文件,你可以看到诸如`&lt;result-types&gt;`和`&lt;action&gt;`等元素,它们定义了各种Result Type的行为。例如,`&lt;result-type&gt;`元素定义了一个新的Result Type,包括其类名、ID和默认配置。 除了默认的Dispatcher ...

    jsp\No result defined for action and result input.doc

    ### Struts2框架中“No result defined for action and result input”错误解析及解决方法 #### 错误概述 在Struts2框架中开发Web应用程序时,可能会遇到一个名为“No result defined for action and result input...

    result接口jar包.rar

    本篇文章将深入探讨“result接口”和相关的JAR包,以及它们在实际开发中的应用。 首先,让我们理解“result接口”。在软件工程中,接口是一种定义了特定功能的合同,它规定了类或对象必须实现的方法。Result接口很...

    deal-result.py

    deal_result.pydeal_result.pydeal_result.pydeal_result.pydeal_result.pydeal_result.pydeal_result.pydeal_result.pydeal_result.pydeal_result.pydeal_result.pydeal_result.pydeal_result.pydeal_result.pydeal...

    struts2 Result类型

    Struts2 Result类型是Struts2框架中一个关键的概念,它是动作执行完成后跳转到下一个页面或处理逻辑的核心机制。Result类型定义了如何处理动作执行的结果,使得开发者能够灵活地控制应用程序的流程。 首先,我们...

    自定义注解Result实例

    Result result = method.getAnnotation(Result.class); if (result != null) { System.out.println("返回信息: " + result.message()); System.out.println("状态码: " + result.code()); // 调用方法并获取...

    struts2的result标签使用

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

    struts2中常用Result类型(type)的用法和出现的问题

    Struts2 中常用 Result 类型(type)的用法和出现的问题 Struts2 中的 Result 类型(type)是指在 Struts2 框架中用于确定 action 执行结果的方式。常用的 Result 类型有 dispatcher、redirect 和 chain 三种。这三...

    struts2配置文件之result

    ### Struts2配置文件中的Result详解 在Struts2框架中,`result`是一个非常重要的概念,它主要用于定义Action执行完成后页面的跳转规则。本文将深入探讨Struts2配置文件中`result`的配置方法及其不同的类型,并通过...

    Struts2 result和type

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

    struts2 result转向到action

    ### Struts2 Result 转向到 Action 的深入解析 #### 一、基本概念与应用场景 **Struts2** 是一款流行的 Java Web 开发框架,它支持多种开发模式(如 MVC),并提供了一系列用于简化 Web 应用程序开发的功能。在 ...

    result最为返回值

    Result result = ResultSupport.toResult(rs); ``` 转换完成后,Result对象提供了多种方便的方法来访问数据。`getResultCount()`方法返回结果集中所有行的数量,这样我们就可以检查是否有任何数据返回: ```java ...

    struts2的action的几种result type说明

    在Struts2中,Action是业务逻辑的核心组件,而Result是控制流程的关键部分,它定义了Action执行后如何展示结果。Result Type是Result的一种预定义类型,决定了结果如何被处理和展现给用户。在`struts-default.xml`...

    struts2中result类型之redirect

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

    jquery result.xml

    jquery result.xml

    Business Result B2 SB

    Business Result English for Student book Business Result Second Edition offers business professionals more communication and language practice than ever before, helping students develop relevant ...

    resultful风格接口.md

    resultful风格接口.md

    使用Java集合模拟JSTL包中的Result接口功能

    在JSP/Servlert/JavaBean技术课程中,本人讲解第六章讲高级JDBC时,再讲到书写通用BaseDAO时,标准课件使用了jstl包中的Result接口来封装数据库的结果集。这样做的结果本人觉得比较麻烦,因为需要导jstl包。如果不想...

Global site tag (gtag.js) - Google Analytics