通过侦听器将 URL 查询字符串中的参数传递给操作



我有一个工作正常的拦截器,只是查询字符串没有从拦截器传递给操作。

    <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配置或注释,还是其他配置提供程序,拦截器都存储在集合中,例如ListSet,没关系,但所有这些都在一个地方。在<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>
<小时 />

现在应该填充参数。

最新更新