【问题标题】:Struts2 Interceptor based on specific URl Patterns基于特定 URl 模式的 Struts2 拦截器
【发布时间】:2014-01-02 09:47:31
【问题描述】:

我想对所有以特定名称开头的操作使用 struts2 拦截器:

假设我想拦截所有以 Module 开头的动作。有什么办法可以配置像 Spring AOP 这样的拦截器,例如:com.acme.web.actions.Module*

我不能使用 AOP,因为它会破坏所有页面参数(我猜那里不可能调用参数拦截器)。

这可能吗?

【问题讨论】:

  • IMO 否决了它是错误的。虽然信息并不广泛,但内容简洁且完全足够。

标签: struts2 struts2-interceptors


【解决方案1】:

在 Struts 中,您可以定义不同的拦截器堆栈和apply different stacks to different actions

因此,在您的情况下,您可以像这样定义不同的堆栈:

<interceptors>
  <interceptor name="myInterceptor" class="com.company.security.MyInterceptor"/>
  <interceptor-stack name="myStack">
    <interceptor-ref name="myInterceptor"/>
    <interceptor-ref name="defaultStack"/>
  </interceptor-stack>
</interceptors>

并且,使用wildcard mappings,下面的配置本质上是“将名为 ModuleSomething 的所有操作映射到 com.acme.web.actions.ModuleSometing 类,并将 myStack 的拦截器应用到它:

<action name="Module*" class="com.acme.web.actions.Module{1}">
  <result>{1}.jsp</result>
   <interceptor-ref name="myStack"/>
</action>

【讨论】:

    猜你喜欢
    • 2017-10-02
    • 2014-03-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-11
    相关资源
    最近更新 更多