【SSH项目实战】国税协同平台-10.自定义返回结果类型

简介:
上一篇我们进行了自定义异常的设置和捕获,然后跳转到我们自己的异常通知界面。那么,我们捕获到异常以后,我们想利用前面请求的参数做一些事情,我们就可以利用struts的“自定义返回结果类型”。

类“class StrutsResultSupport”就是“struts类结果返回支持”,如果某个类继承了这个父类的话,这个类就会被执行。

可以给这个类传入3个参数:location、parse、encode。

在使用之前,我们先处理一些东西
我们把Action中公用的东西抽出来放在BaseAction中:
package cn.edu.hpu.tax.core.action;

import com.opensymphony.xwork2.ActionSupport;

public abstract class BaseAction extends ActionSupport{
	//这里selectedRow是批量操作时的id数组
	protected String[] selectedRow; 
	
	public String[] getSelectedRow() {
		return selectedRow;
	}
	public void setSelectedRow(String[] selectedRow) {
		this.selectedRow = selectedRow;
	}
}

然后我们的所有Action都继承BaseAction:
public class UserAction extends BaseAction{
	//里面就不再有selectedRow属性
	//其他代码省略
}

好了,开始编写我们的系统的异常结果处理。

我们在核心包下加入系统的异常结果处理类:
package cn.edu.hpu.tax.core.action;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.struts2.ServletActionContext;
import org.apache.struts2.dispatcher.StrutsResultSupport;

import com.opensymphony.xwork2.ActionInvocation;

public class SysResultAction extends StrutsResultSupport{


	@Override
	protected void doExecute(String arg0, ActionInvocation invocation)
			throws Exception {
		HttpServletRequest request= ServletActionContext.getRequest();
		HttpServletResponse response= ServletActionContext.getResponse();
		//得到报错时候上层的action类
		BaseAction action=(BaseAction)invocation.getAction();
		
		//request.response,action类你都得到了,可以做你想做的任何操作了
		System.out.println("进入了SysResultAction...");
	}


}

然后我们在strust的配置文件strust.xml中定义返回结果类型(也就是在原来的配置基础上增加了result-types):
<!-- 配置全局结果集异常映射 -->
<package name="base-default" extends="struts-default">
	<!-- 返回结果类型 -->
	<result-types>
		<result-type name="error" class="cn.edu.hpu.tax.core.action.SysResultAction"/>
	</result-types>
	
	<!-- 全局返回结果 -->
	<global-results>
		<result name="error" type="error">/WEB-INF/jsp/error.jsp</result>
		<result name="sysError">/WEB-INF/jsp/error.jsp</result>
		<result name="input">/WEB-INF/jsp/error.jsp</result>
	</global-results>
	
	<!-- 全局异常映射 -->
	<global-exception-mappings>
		<exception-mapping result="sysError" exception="cn.edu.hpu.tax.core.exception.SysException"/>
		<exception-mapping result="input" exception="java.lang.Exception"/>
	</global-exception-mappings>
</package>

我们在Action类的某个出错的方法中return "error";那么就会进入到SysResultAction类中,我们可以在里面进行一些其他事物的处理。

转载请注明出处:http://blog.csdn.net/acmman/article/details/49494415

相关文章
|
网络安全
【ssh】Struts2自定义拦截器
【ssh】Struts2自定义拦截器
47 0