假如说,页面一个输入控件,如果没有输入内容就提交,则对其进行拦截
1,首先定义一个拦截器
public class Myintercept implements Interceptor { /** * */ private static final long serialVersionUID = 1L; public void destroy() { } public void init() { } public String intercept(ActionInvocation invocation) throws Exception { Upload action = (Upload)invocation.getAction(); String name = action.getName(); if("".equals(name)||null==name) { System.out.println("已拦截"); return "wrong"; } else { return invocation.invoke();//该方法返回的就是action里面的视图名称; } } }
然后配置该action所在的配置文件
<!-- 如果配置下列代码,该包下所有的action都会配置上该拦截器 --> <!-- <default-interceptor-ref name=""></default-interceptor-ref> --> <interceptors> <interceptor name="lanjieqi" class="com.intercept.Myintercept"></interceptor> <interceptor-stack name="lanjieqizhan"> <interceptor-ref name="defaultStack"></interceptor-ref> <interceptor-ref name="lanjieqi"></interceptor-ref> </interceptor-stack> </interceptors> <action name="upload" class="com.upload.Upload" > <interceptor-ref name="lanjieqizhan"></interceptor-ref> <result name="success">/index.jsp</result> <result name="wrong">/index.jsp</result> </action>
需要注意的是,假如你应用了自己的拦截器,则struts2所提共的拦截器会全部失效,解决方法就是定义一个拦截器栈,在拦截器栈中引用默认拦截器和自定义拦截器,默认拦截器必须在第一位,然后再action配置中引入该拦截器栈