struts2 tokensession 未在 Action excludedMethod 中设置请求

struts2 tokensession not setting request in Action excludedMethod

我正在尝试使用 tokenSession 避免重复提交问题。我的操作方法在没有 tokenSession 技术的情况下工作正常。
我在 upsert_crypto_sources.jsp 中添加了 <s:token/>,在 struts.xml 中添加了 tokenSession 拦截器,但我在 list() 的操作 excludedMethod 中收到的请求为 null。 列表页面不需要避免双重提交问题,但是如果我在 view_crypto_sources_list.jsp 中添加 <s:token/> 并从 excludedMethod 中删除 list() 那么我总是会收到结果 invalid.token.
我的 struts.xml 就像:

<struts>
  <package name="key-manager" namespace="/shared/km" extends="console-default" strict-method-invocation="true">
    <action name="manage_cs_*" method="{1}" class="console.shared.km.ASC_ManageCryptoProfilesAction">
    <interceptor-ref name="tokenSession">
            <param name="excludeMethods">
                list, initInsert, load, delete
            </param>
        </interceptor-ref>
    <result name="list">/shared/km/view_crypto_sources_list.jsp</result>
    <result name="insert">/shared/km/upsert_crypto_sources.jsp</result>
    <result name="update">/shared/km/upsert_crypto_sources.jsp</result>
    <result name="load">/shared/km/upsert_crypto_sources.jsp</result>
    <allowed-methods>list, insert, load, update, delete, testConnection, forward, cancel</allowed-methods>   
</action>

我的操作实现了 ServletRequestAware 接口,因此它使用 setServletRequest() 方法获取请求成员变量集。

我添加了一个 defaultStack 拦截器,它工作正常:

<struts>
  <package name="key-manager" namespace="/shared/km" extends="console-default" strict-method-invocation="true">
    <action name="manage_cs_*" method="{1}" class="console.shared.km.ASC_ManageCryptoProfilesAction">
      <interceptor-ref name="defaultStack"></interceptor-ref>
      <interceptor-ref name="tokenSession">
            <param name="excludeMethods">
                list, initInsert, load, delete
            </param>
        </interceptor-ref>
    <result name="list">/shared/km/view_crypto_sources_list.jsp</result>
    <result name="insert">/shared/km/upsert_crypto_sources.jsp</result>
    <result name="update">/shared/km/upsert_crypto_sources.jsp</result>
    <result name="load">/shared/km/upsert_crypto_sources.jsp</result>
    <allowed-methods>list, insert, load, update, delete, testConnection, forward, cancel</allowed-methods>   
</action>