Struts2拦截器属性excludeMethods、includeMethods配置无效之解决方法
2012-09-10 14:21
417 查看
在配置struts2 拦截器属性excludeMethods、includeMethods进行方法过滤时发现不起作用。
经过查看书籍之后发现,要想使方法过滤配置起作用,拦截器需要继承MethodFilterInterceptor类。MethodFilterInterceptor类是AbstractInterceptor的子类,其源代码如下:
只需要实现该类中的
样例代码:
实现之后拦截器属性excludeMethods、includeMethods就可以起到作用了。
经过查看书籍之后发现,要想使方法过滤配置起作用,拦截器需要继承MethodFilterInterceptor类。MethodFilterInterceptor类是AbstractInterceptor的子类,其源代码如下:
public abstract class MethodFilterInterceptor extends AbstractInterceptor { protected transient Logger log = LoggerFactory.getLogger(getClass()); protected Set<String> excludeMethods = Collections.emptySet(); protected Set<String> includeMethods = Collections.emptySet(); public void setExcludeMethods(String excludeMethods) { this.excludeMethods = TextParseUtil.commaDelimitedStringToSet(excludeMethods); } public Set<String> getExcludeMethodsSet() { return excludeMethods; } public void setIncludeMethods(String includeMethods) { this.includeMethods = TextParseUtil.commaDelimitedStringToSet(includeMethods); } public Set<String> getIncludeMethodsSet() { return includeMethods; } @Override public String intercept(ActionInvocation invocation) throws Exception { if (applyInterceptor(invocation)) { return doIntercept(invocation); } return invocation.invoke(); } protected boolean applyInterceptor(ActionInvocation invocation) { String method = invocation.getProxy().getMethod(); // ValidationInterceptor boolean applyMethod = MethodFilterInterceptorUtil.applyMethod(excludeMethods, includeMethods, method); if (log.isDebugEnabled()) { if (!applyMethod) { log.debug("Skipping Interceptor... Method [" + method + "] found in exclude list."); } } return applyMethod; } /** * Subclasses must override to implement the interceptor logic. * * @param invocation the action invocation * @return the result of invocation * @throws Exception */ protected abstract String doIntercept(ActionInvocation invocation) throws Exception; }
只需要实现该类中的
protected abstract String doIntercept(ActionInvocation invocation) throws Exception即可。
样例代码:
package cua.survey.interceptor; import java.util.Map; import com.opensymphony.xwork2.Action; import com.opensymphony.xwork2.ActionContext; import com.opensymphony.xwork2.ActionInvocation; import com.opensymphony.xwork2.interceptor.AbstractInterceptor; import com.opensymphony.xwork2.interceptor.MethodFilterInterceptor; public class LoginInterceptor extends MethodFilterInterceptor{ private static final long serialVersionUID = 1L; protected String doIntercept(ActionInvocation action) throws Exception { Map<String, Object> session = ActionContext.getContext().getSession(); String user = (String)session.get("user"); if(user != null && !"".equals(user)){ return action.invoke(); }else{ session.put("error", "your user or pwd is error, please login again..."); return Action.LOGIN; } } }
实现之后拦截器属性excludeMethods、includeMethods就可以起到作用了。
相关文章推荐
- Struts2拦截器属性excludeMethods、includeMethods配置无效之解决方法
- Struts2拦截器属性excludeMethods、includeMethods配置无效的原因
- 自定义拦截器 includeMethods和excludeMethods无效 解决方法
- struts2中方法拦截器(Interceptor)的中的excludeMethods与includeMethods的理解
- struts2中方法拦截器(Interceptor)的中的excludeMethods与includeMethods的理解
- struts2中方法拦截器(Interceptor)的中的excludeMethods与includeMethods的理解
- clipChildren属性无效的解决方法
- IOS8界面调整自适应属性后无效的解决方法
- struts2拦截器interceptor的三种配置方法
- 动态方法调用 在Struts2中动态方法调用有三种方式,动态方法调用就是为了解决一个Action对应多个请求的处理,以免Action太多 第一种方式:指定method属性 这种方式我们前面已经用到过
- struts2,hibernate4,spring3配置时有关问题汇总及解决方法
- div层调整zindex属性无效原因分析及解决方法
- struts2的配置之could not find action or result 问题的解决方法(struts.xml文件路径)
- 解决Struts2拦截器的对于参数传递无效问题
- DIV的高度自动拉伸(height属性)在IE 7和Firefox下无效和解决方法
- android Toolbar菜单 always属性无效解决方法
- Win7 DCOM 配置中我的电脑出现红色箭头并且无属性显示的解决方法
- div层调整zindex属性无效原因分析及解决方法
- struts2拦截器interceptor的三种配置方法
- 在linux上配置Maven环境变量(重启mvn -v无效的解决方法)