论坛首页 Java企业应用论坛

struts2自定义Result

浏览 1606 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2014-01-06  
自定义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就相当于是包装这个视图展示技术的。
私塾在线网站原创
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics