我有一个工作正常的拦截器,只是查询字符串没有从拦截器传递给操作。
<action name="EditIroCase" class="iro.action.IroCaseAction">
<interceptor-ref name="authIro"/>
<result name="success">iro/IroCaseFORM.jsp</result>
</action>
网址: /EditIroCase.action?id=123
操作是我正在添加拦截器的现有操作。在Action
中实现ParametersAware
以从URL获取ID,并且工作正常。
尝试了几件不同的事情,但似乎无法使其工作。使用了很多拦截器,只是永远不需要在其执行过程中维护参数。
拦截器的工作方式略有不同,而不是操作。因为它们属于行动。因此,您不能将操作添加到侦听器,但可以向操作添加侦听器。
您应该知道,如果您使用的是xml配置或注释,还是其他配置提供程序,拦截器都存储在集合中,例如List
或Set
,没关系,但所有这些都在一个地方。在<action>
中使用<interceptor-ref>
标记会覆盖拦截器的配置。默认情况下,操作是使用<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>
<小时 />现在应该填充参数。