通过Interceptor将查询字符串传递给Action

时间:2016-05-23 02:02:35

标签: struts2 parameter-passing query-string struts2-interceptors

我有一个正常工作的拦截器,除了查询字符串没有传递给拦截器的动作。

<action name="EditIroCase" class="iro.action.IroCaseAction">
            <interceptor-ref name="authIro"/>
            <result name="success">iro/IroCaseFORM.jsp</result>
 </action>

网址:/EditIroCase.action?id=123

动作是我正在添加拦截器的现有动作。在Action中实现ParamAware以从URL获取ID并且工作正常。尝试了几个不同的东西,但似乎无法使其发挥作用。使用了大量的拦截器,从不需要在执行过程中维护一个参数。

1 个答案:

答案 0 :(得分:0)

拦截器的工作略有不同而不是行动。因为他们属于行动。所以你不能向拦截器添加动作,而是拦截动作。

您应该知道您是使用xml配置或注释,还是其他配置提供程序,拦截器存储在集合中,例如ListSet,无关紧要,但所有拦截器都在一个地方。使用<interceptor-ref> 中的<action>标记覆盖拦截器的配置。默认情况下,使用<default-interceptor-ref>标记配置操作,该标记在核心包的struts-default.xml中定义,并指向defaultStack。此堆栈旨在满足您的所有需求,但如果您使用自定义拦截器,则应明确添加对defaultStack的引用或创建您将引用的自定义堆栈。

<action name="EditIroCase" class="iro.action.IroCaseAction">
        <interceptor-ref name="authIro"/>
        <interceptor-ref name="defaultStack"/>
        <result name="success">iro/IroCaseFORM.jsp</result>
</action>

现在应该填充参数。