`

自定义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,自定义Annotation的实例

    Struts2 国际化字符串 拦截器

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

    自定义的struts2的resulttype

    自定义struts2的result-type的一个小例子...

    python语言程序设计自定义函数.docx

    下面我们来看一个简单的例子,该函数用于计算两个数的和: ``` def add(x, y): result = x + y python语言程序设计自定义函数全文共3页,当前为第1页。 return result python语言程序设计自定义函数全文共3页,当前...

    MATLAB结构化程序与自定义函数.md

    在上面的示例中,我们定义了四个自定义函数:preprocessData用于数据预处理,analyzeData用于数据分析,plotResult用于可视化结果,以及saveResult用于保存结果。每个函数完成特定的任务并返回相应的结果。 您可以...

    DELPHI MessageBox自定义消息框图标〖源代码〗

    Result:=MessageBoxIndirect(Msg); end; ---- 要想在消息框中显示自己的图标,先准备一个装有图标的资源文件,加在程序中,如{$R c:\mydir\myres.res},在lStyle参数里除了所需的MB_标志外还要加上MB_USERICON...

    DirectWrite自定义字体加载器 实现

    简单的对于DirectWrite字体读取接口的实现,通过传入std::vector以获取IDWriteFontCollection.

    C# 自定义窗体的最大化、最小化和关闭按钮

    自定义窗体的最大化、最小化和关闭按钮, C#移动无标题栏窗体的三种代码: C#移动无标题栏窗体的三种代码:第一种采用,需注意窗体上的控件是否把窗体覆盖了。。。MouseDown、MouseMove、MouseUp事件应该是鼠标所...

    准确分词之加载自定义字典分词.zip

    result_cut.txt 分词后的输出文本 ``` 1.主函数按行读取text.txt文本,分别用jieba分词和hanlp分词进行分词, 2.1.添加jieba分词自定义词典,在./dict.txt中添加: ``` 台中 氟尿嘧啶单药 联合奥沙利铂 Cox模型 ...

    基于Pytorch框架自定义7层卷积神经网络模型实现垃圾分类系统源码+数据集+项目说明(人工智能期末作业).zip

    基于Pytorch框架自定义7层卷积神经网络模型实现垃圾分类系统源码+数据集+项目说明(人工智能期末作业).zip 垃圾分类 ...Result: 使用 PyTorch 自定义 7 层卷积神经网络加 2 层全连接层的分类模型

    workbench结果输出类型

    ANSYS Workbench提供了相对容易的GUI操作方式,可以进行模型的前处理、计算设置、后处理等,而且增加了很多人性化功能方便大家进行软件的使用。今天这篇文章针对后处理中,进行结果查看时常用的功能或小技巧进行梳理...

    C#常用自定义函数小结

    本文实例总结了几个C#常用的自定义函数,非常实用。分享给大家供大家参考。具体如下: 1.将数组转成字符串 /// /// 将数组转成字符串 /// /// 分隔符 /// 要字符串数组 private string Implode(char glue,string...

    Django 解决开发自定义抛出异常的问题

    可是如何进行自定义抛出异常信息呢?通常处理方法有三种,我将依次介绍这三种方法。 第一种方法: 这种方法最为简单,只需要创建一个字典对象,通过render传到前端即可。 字典对象如下: result = {‘code’:”, ...

    js获取单元格自定义属性值的代码(IE/Firefox)

    代码如下:// js取单元格自定义属性值,IE和FF下的不同实现 result+=”” var isIE=document.all ? true : false; if(isIE)//IE { for (var i=0;i&lt;obj result+=”&gt;&lt;![CDATA[“+$(obj.cells[i]).text()+”]]&gt;&lt;/...

    返回自定义PagedResult

    自定义一个 RagedResultDto类,返回给前端Json对象,包括常用的分页信息,具体如下: public List&lt;Tentity&gt; list { get; set; } public int PageSize { get; set; } public int PageIndex { get; set; } ...

    Oracle用户自定义异常实现过程解析

    --,先自定义一个异常:no_result exception -- if sql%nofund then --excetpion --when no_result then --dbms…… 用户自定义异常写在:declare里,如: set serveroutput on declare no_result ex

    使PHP自定义函数返回多个值

    但不可忽视的一点是,return语句可以返回任何类型的变量,这就是使自定义函数返回多个值的关键。请看代码: &lt;?php function results($string) { $result = array(); $result[] = $string;//原字符串 $result...

    自定义MVC框架

    在配置文件中配置所有的action由ActionServlet统一管理,对于用户请求,根据请求URL调用不用的Action来处理,处理完之后再根据返回的Result返回给Dispatcher,根据action不同result的配置来转发或重定向到不同的页面.

    barlayer:自定义DeckGL层

    这是一个自定义的DeckGL图层,使用条形来使用以下值表示值:颜色,比例,厚度和旋转角度。 这些是通过以下方法在底层GL(图形库)中定义和使用的: getColor ,四个默认值[0, 0, 0, 255] 0,0,0,255]的RGBA值的...

Global site tag (gtag.js) - Google Analytics