Struts2中的异常处理

来源:互联网 发布:北京seo外包服务 编辑:程序博客网 时间:2024/05/19 19:42

oval 定义

oval 是一个可扩展的Java对象数据验证框架,验证的规则可以通过配置文件、Annotation、POJOs 进行设定。

DMP中使用到的oval验证

1、Length(max = 1, min = 10):长度验证,min表示最小长度,max表示最大长度2、NotNull:非空验证3、NotEmpty:非空字符串验证4、ValidateWithMethod(methodName = "methodName", parameterType = ):自定义验证,methodName表示验证方法,parameterType表示验证的属性的类型

注:

1、DMP中的oval是通过注解进行设定的2、oval所有验证规则中都有一个message属性,可以用来覆盖oval自带的验证信息3、所有的的oval验证均出现在DTO对象的属性中4、所有的DTO对象继承BaseDTO。BaseDTO中实现公共的自定义验证需要的方法。用到的所有的方法如下
    // BaseDTO    public boolean isValidType(String string)    public boolean isValidSelfUuid(String uuid)    public boolean isValidUuid(String uuid)    public boolean isValidState(String state)    public boolean isValidSprintState(String state)    public boolean isValidReleaseState(String state)    public boolean isValidDouble(Double digit)    public boolean isValidDefectState(String state)    public boolean isValidEnviroment(String enviroment)    public boolean isValidPriority(String priority)    public boolean isValidSeverity(String severity)

Action相关

1、BaseAction 中validate方法实现对DTO对象的验证,如果有验证不通过的,取出验证信息,保存到ValidationException中,直接抛出。(validate方法如下)2、所有的Action类继承BaseAction,并在需要的时候调用validate方法进行对象验证。3、验证不通过,Action类直接抛出自定义异常ValidationException(其中包含验证返回的信息)4、ExceptionHandlingInterceptor为自定义的异常处理过滤器,用来处理action中抛出的所有异常。
// validate方法。// BaseActionprotected void validate(Object object) throws ServerException {    Validator validator = new Validator();    List<ConstraintViolation> violations = validator.validate(object);    if (violations.size() > 0) {        StringBuilder builder = new StringBuilder();        for (ConstraintViolation constraintViolation : violations) {            builder.append(constraintViolation.getMessage());        }            throw new ValidationException(builder.toString());    }}

ExceptionHandlingInterceptor

1、拦截所有的请求,对action中抛出的所有异常进行处理2、根据不同的异常类型,在重载的intercept方法中走不同的处理,并返回相应的字符串。(之后要做如果是ValidationException,打Warning级别的log3、返回的字符串在struts.xml的全局页面中查找对应的页面
public class ExceptionHandlingInterceptor extends ExceptionMappingInterceptor {    @Override    public String intercept(ActionInvocation invocation) throws Exception {        // TODO    }}

struts.xml的配置

1、配置struts拦截器时,需要添加自定义的异常处理拦截器ExceptionHandlingInterceptor2、每个struts.xml中的包继承于下面的exception_package
<-- struts.xml文件 --><package name="exception_package" extends="json-default">    <interceptors>        <interceptor name="oValValidation"            class="org.apache.struts2.oval.interceptor.OValValidationInterceptor" />        <interceptor name="exception_handling_interceptor"            class="com.augmentum.dmp.interceptor.ExceptionHandlingInterceptor"></interceptor>        <interceptor-stack name="dmp_default_stack">            <interceptor-ref name="defaultStack"></interceptor-ref>            <interceptor-ref name="exception_handling_interceptor"></interceptor-ref>            <interceptor-ref name="oValValidation"></interceptor-ref>        </interceptor-stack>    </interceptors>    <default-interceptor-ref name="dmp_default_stack"></default-interceptor-ref></package>
3global-results 节点中存放所有的全局匹配页面与处理异常的ExceptionHandlingInterceptor类返回的字符串相映射
<-- struts.xml文件 --><global-results>    <result name="privilege_error_exception">/WEB-INF/exception/privilegeException.jsp</result>    <result name="struts_no_handling_exception">/WEB-INF/exception/unknowException.jsp </result>    <result name="error">/WEB-INF/exception/unknowException.jsp</result>    <result name="iap_error">/WEB-INF/exception/unknowException.jsp</result>    <result name="struts_bussiness_exception">/WEB-INF/exception/businessException.jsp</result>    <result name="struts_validation_exception">/WEB-INF/exception/validationException.jsp</result>    <result name="struts_dataError_exception">/WEB-INF/exception/unknowException.jsp</result></global-results>
0 0
原创粉丝点击