码迷,mamicode.com
首页 > 其他好文 > 详细

Struts2笔记——3.配置处理结果

时间:2015-08-21 00:22:11      阅读:132      评论:0      收藏:0      [点我收藏+]

标签:struts2 web开发 架构 计算机 it

action只是一个控制器,真正为客户端呈现处理结果的是jsp文件。而action的工作,是要在xml中配置,在特定的情况下返回特定的jsp页面。action的java类中返回的是String类型,而它仅仅是一个逻辑处理结果,或者说它只是一个代号。只有在xml中配置了逻辑结果与物理结果的映射关系,jsp页面才会作为response呈现。其实Struts2支持多种结果映射,因此物理结果资源可以是jsp,也可以是另一个action链中的另一个action。result元素起到了一个路标的作用。


配置结果

在struts.xml中的action下使用众多result子元素来配置结果,它的name属性就是逻辑结果(也就是action的方法中返回的字符串)。标准写法如下:

<action name="login">
	<result name="success" type="dispatcher">
		<param name="location">/WEB-INF/welcome.jsp</param>
	</result>
</action>

默认的type就是dispatcher,也就是转发;默认的name是success。因为通常无需指定param,所以一般只需这样写:

<result name="success">/WEB-INF/welcome.jsp</result>

可以使用通配符来指定result的不同url。可以在package中设置全局结果。

<global-results>
	<result>/WEB-INF/global.jsp</result>
</global-results>


各种result结果类型

result不仅可以调取对应的视图资源,也可以指定其他类型的资源。常用的type有plainText、redirect、redirectAction。

plainText可以将结果视图资源当成resource code输出。

redirect相当于重定向到某一个视图资源。

redirectAction可以重新生成一个新的请求,跳转到另一个action。

<result name="resultname" type="redirectAction">
	<param name="actionName">another</param>
	<param name="namespace">/others</param>
</result>
			
<result name="error" type="redirectAction">another</result>

第一种配置方式可以转发到其它命名空间的action。第二种直接转到相同空间的action。


PreResultListener

这个监听接口可以在action完成控制后,转入result视图前被回调,监听器的beforeResult方法会被调用。在action的处理方法中添加如下代码:

 ActionInvocation invocation=ActionContext.getContext().getActionInvocation();
	invocation.addPreResultListener(new PreResultListener(){
		public void beforeResult(ActionInvocation arg0, String arg1) {
			System.out.println("我是监听的处理代码");
			}
		});

添加监听器通过ActionInvocation的addPreResultListener方法完成。这个监听器可以添加给action,也可以添加给拦截器,使之对它所拦截的所有action有效。
beforResult方法中的arg1参数指的是逻辑视图的名字,success或者是error。


动态结果

有两种实现动态结果的方式。第一种是通过通配符,action的name决定了跳转的result page的名字。第二种是使用OGNL表达式,直接使用${ }来输出属性名,由属性名决定视图资源的名称。


本文出自 “指尖轻飞” 博客,谢绝转载!

Struts2笔记——3.配置处理结果

标签:struts2 web开发 架构 计算机 it

原文地址:http://mengcao.blog.51cto.com/9395052/1686688

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!