首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >允许拦截器不为某些类运行的Struts2

允许拦截器不为某些类运行的Struts2
EN

Stack Overflow用户
提问于 2014-02-11 12:51:06
回答 2查看 178关注 0票数 0

我有一个定制的拦截器。我希望这个拦截器能在所有的动作调用上运行,除了少数几个。我想对此进行编程(为了可扩展/清晰),而不是在拦截器的intercept()方法本身中使用if/for语句检查操作的名称。

我认为这可能是用Struts2的“排除方法”能力来完成的,但我仍然无法解释具体的细节。我认为我的拦截器需要扩展MethodFilterInterceptor,但是它有2种拦截方法,而且API在说明每个拦截方法应该做什么方面没有多大帮助:

受保护的抽象字符串doIntercept(ActionInvocation调用) 子类必须重写以实现拦截器逻辑。 字符串拦截(ActionInvocation调用) 覆盖以处理拦截

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-02-11 12:58:52

你的想法正好相反:

与其检查Action (或者更好的是instanceOf来检查某个特定的Action ),不如告诉该操作使用不同的Interceptor。

例如,您可以说您的自定义堆栈(包含您的拦截器的堆栈)是默认的(然后应用于所有操作),但是ActionA、ActionB和ActionX运行在DefaultStack.

票数 3
EN

Stack Overflow用户

发布于 2014-02-11 12:58:36

  1. 拦截器不应该扩展ActionSupport,讨厌。它们不是行动。
  2. 用接口或注释标记它应该(或不应该)运行的操作,并在拦截器中检查它。
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21702368

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档