类“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