`

自定义Result

    博客分类:
  • J2EE
 
阅读更多
自定义Result
5.7.1  什么是自定义Result
所谓自定义Result,就是由我们自行开发的Result,而不是使用由Struts2预先定义好的Result。
       在实际开发中,需要自定义Result的机率并不大,因为常见的各种页面展示技术,Struts2都已经预定义好相应的Result了,无需我们自行开发。如果我们要自定义Result,要么就是包装一种新的页面展示技术,要不干脆就是我们自行开发的页面展示技术,出现这些情况的可能性很低。
       虽然用得不多,但是从知识的完整性上,还是需要了解如何自定义Result的,再说,了解自定义Result,也能加深对Result技术的理解。
5.7.2  开发自定义Result
其实,开发自定义Result是非常简单的,只需要实现com.opensymphony.xwork2.Result接口就可以了,这个接口的定义也非常简单,示例如下:

java代码:
查看复制到剪贴板打印
public interface Result extends Serializable { 
    public void execute(ActionInvocation invocation) throws Exception; 

就是一个execute方法,在这个方法里面去写Result的真正处理,就是如何展示视图。当然,所有需要的数据都可以从ActionInvocation里面获取到。
       好了,下面来写个示例示范一下,如何开发自定义的Result。为了简单,就采用字符界面来展示视图,简单点说,就是把信息在后台输出一下。
1:写MyResult类
示例如下:

java代码:
查看复制到剪贴板打印
package cn.javass.action.action; 
 
import com.opensymphony.xwork2.ActionInvocation; 
import com.opensymphony.xwork2.Result; 
 
public class MyResult implements Result{ 
    public void execute(ActionInvocation invocation) throws Exception { 
        System.out.println("要处理的Result字符串是="+invocation.getResultCode()); 
    } 

只是简单的输出了Action返回的要处理的Result的字符串的值,至于要想获取更多要展示的值,可以通过ActionInvocation去获取ActionContext,在ActionContext里面封装着所有需要的值。由于ActionContext在后面才会详细学到,这里就先不去示例了。
2:在struts.xml中配置使用MyResult
示例如下:

java代码:
查看复制到剪贴板打印
<package name="helloworld"  extends="struts-default"> 
        <result-types> 
            <result-type name="MyResult" class="cn.javass.action.action.MyResult" default="false"/> 
        </result-types> 
                 
        <action name="helloworldAction" class="cn.javass.action.action.HelloWorldAction"> 
            <result name="toWelcome" type="MyResult">/s2impl/welcome.jsp</result> 
        </action> 
</package> 
这里面有两个地方要注意:
在<action>当前的<package>里面配置了自定义的<result-type>,当然它的配置也很简单,主要就是name和class属性,还有一个default的属性用来表示这个ResultType是否缺省使用的。
另外一个地方,在<action>里面配置<result>的时候,要配置type属性,type属性的值就是我们自定义的<result-type>的name属性的值
3:测试一下
其它的没有什么变化,照例从登录页面开始运行,去测试一下,看看效果。后台应该有如下输出信息:

java代码:
查看复制到剪贴板打印
用户输入的参数为===account=test,password=test,submitFlag=login 
要处理的Result字符串是=toWelcome 
其中加粗的这句话就是由我们自定义的Result输出的。
       注意:由于此时我们的Result并没有向页面输出任何东西,因此,此时的页面应该是一片空白。
       通过这个示例可以看到,自定义Result也不是一件很困难的事情,困难的是到底如何展示数据,也就是必须有一个相应的视图展示技术,Result就相当于是包装这个视图展示技术的。
分享到:
评论

相关推荐

    自定义注解Result实例

    本实例将深入探讨如何创建一个名为`Result`的自定义注解,并了解如何在实际应用中使用它。 首先,我们需要定义自定义注解`Result`。在Java中,自定义注解的定义通常以`@interface`关键字开始。例如: ```java ...

    struts2 Result类型

    在“Struts2_1500_ResultType”这个压缩包文件中,可能包含了Struts2框架的源代码、相关的示例项目、文档或者自定义Result类型的实现。通过深入研究这些内容,你可以更全面地掌握Struts2 Result类型的使用和扩展方法...

    struts2 跳转至404 页面的解决方案

    检查`struts-default.xml`或自定义的配置文件,确认404错误是否被正确地映射到了一个自定义的错误页面。 8. **IDE或服务器设置**:有时候,开发环境或服务器的配置也可能导致404错误,例如Tomcat的Context配置、...

    struts2 result type 介绍

    开发者还可以自定义Result Type,通过创建新的Java类实现`com.opensymphony.xwork2.Result`接口,并在配置文件中注册这个类型。 在Action配置中,我们可以通过`&lt;result&gt;`元素来指定Action的特定结果。`&lt;result&gt;`...

    struts2的action的几种result type说明

    在实际开发中,你还可以自定义Result Type以满足特定的需求,只需要扩展Struts2的Result接口并配置相应的类即可。同时,也可以通过Action的配置或者struts.xml配置文件来为每个Action指定特定的Result Type,以实现...

    自定义mystruts

    4. **自定义Result类型** 结果类型决定了Action执行后的跳转方式。通过实现`com.opensymphony.xwork2.Result`接口,我们可以自定义新的Result类型,比如将结果输出为CSV格式或XML格式。 5. **自定义Validator** ...

    DynamicResult

    4. **实现动态结果集**:通过代码示例展示如何在Struts2中创建和使用动态结果集,可能涉及自定义Result类、处理动态数据模型以及在JSP页面上的展现。 5. **数据绑定和视图层**:讲解如何利用OGNL(Object-Graph ...

    Struts2 国际化字符串 拦截器

    另外,您还可以自定义result类型。 下面让我们来做一个Velocity模板输出的例子,首先在classes/struts.xml中新建一个Action映射(Mapping),将其result类型设为velocity,如以下代码所示: &lt;result type=...

    struts-2.2.3-src

    开发者可以自定义Result类型以满足特定需求。 4. **Tiles**:Struts2集成了Tiles框架,允许我们创建可重用的页面布局和组件,提高视图层的复用性。 5. **Plug-in Architecture**:Struts2的插件架构使得扩展非常...

    ssh2中的urlrewrite和Struts2的生成静态页面

    - **使用自定义Result Type**:定义好自定义的Freemarker Result Type后,还需要在Struts配置文件中声明该结果类型,并在Action中指定使用。 ```xml &lt;!-- struts.xml --&gt; ,custom"/&gt; &lt;result name="success" ...

    struts2 向结果传参数

    如果内置的结果类型不能满足需求,你可以创建自定义Result类型,这样可以在更复杂的情况下控制参数的传递。 5. **使用插件或拦截器** Struts2的插件和拦截器也可以用来传递参数。例如,Struts2的Tiles插件允许在...

    Struts2完全学习手册-第15-18章 源码

    - **Action级别异常处理**: 在Action类中使用`@ExceptionHandler`注解或自定义Result类型来处理特定的异常。 通过这些章节的学习,你可以深入理解Struts2的工作原理,掌握如何编写Action、配置Struts2、利用拦截器...

    Struts2学习文档

    7. **自定义Result**:讲解了如何创建自定义的Result类型以满足特定的需求。 #### 六、拦截器 1. **拦截器基础**:解释了拦截器的概念及其在Struts2中的作用。 2. **预定义的拦截器**:介绍了Struts2中预定义的各种...

    struct2 api 函数文档

    开发者可以自定义Result类型,通过实现`com.opensymphony.xwork2.Result`接口。 4. **配置文件**:Struts2的配置文件(通常是struts.xml)是定义应用行为的地方,包括Action的映射、拦截器的配置、全局结果等。配置...

    spring整合

    2. **自定义Result**: - Struts2支持自定义`Result`,这使得开发者可以根据实际需求定制更复杂的页面转向逻辑。 - 自定义`Result`需要实现`Result`接口或继承`ResultSupport`类,并在`struts.xml`中注册。 #### ...

    研磨struts2

    预定义的Result类型如dispatcher、redirect、chain等,以及如何自定义Result,都是本章的重点。此外,Struts2的异常映射、PreResultListener等高级特性也被一一解析。 ### 拦截器与值栈、OGNL 第六章深入探讨了...

    浪曦_Struts2应用开发系列_源代码

    源代码会展示如何定义Action类,配置Result类型,以及如何实现自定义Result。 2. **拦截器(Interceptors)**:Struts2的核心组件之一,用于在Action执行前后添加额外的功能,如日志记录、权限验证等。源码中会有各种...

    java struts2上课源码2

    7. ** strut2-091001C(2)**:这个文件可能是课程的某个特定章节,可能包含特定主题的示例代码,如异常处理、拦截器实现、自定义Result等。 学习这个压缩包中的源码,可以让你了解到Struts2如何处理请求、如何组织...

Global site tag (gtag.js) - Google Analytics