Перехватчик токенов Struts2 всегда дает сбой - PullRequest
0 голосов
/ 29 февраля 2012

Я пытаюсь сделать так, чтобы после отправки этой формы я не мог нажать кнопку "Назад", но при текущей конфигурации я не могу даже загрузить страницу / форму. Кажется, я не могу понять, почему «invalid.token» всегда запускается, перенаправляя меня на index.jsp, независимо от того, какой у меня есть токен-тег в моей форме, как я должен. Если я использую фильтр «excludeMethods» и исключаю просмотр, тогда моя страница загружается, но я могу свободно нажимать кнопку «Назад», чтобы она по-прежнему не работала должным образом. Я попытался переместить перехватчик выше и ниже моего noLoginStack, но это не имеет значения. Основываясь на моей отладке, мой настоящий класс java даже не попал, так что до этого он терпел неудачу. Что я делаю не так?

Объявление моего действия:

<action name="viewAppointmentLetter" class="edu.ucr.c3.rsummer.controller.instructor.ManageAppointmentLetters">
        <interceptor-ref name="noLoginStack"/>
        <interceptor-ref name="token" />

        <result name="invalid.token">/index.jsp</result>
        <result name="error" type="redirectAction">index.do</result>
        <result name="input">/instructor/assigned_appts.jsp</result>
        <result name="view">/instructor/assigned_appts.jsp</result>
        <result type="redirectAction">index.do</result>
    </action>

Мой назначенный_адрес.jsp:

<s:form action="saveAppointmentLetter" onsubmit="return verifySubmit();">
      <s:token name="token" />

      .....
</s:form>

Если есть какая-то подсказка, я всегда получаю это в своей консоли

WARN  org.apache.struts2.util.TokenHelper  - Could not find token name in params.

Ответы [ 2 ]

1 голос
/ 29 февраля 2012

В стойках2 порядок перехватчика очень важен. Вы должны следовать этому порядку.

<interceptor-ref name="token"/> 
<interceptor-ref name="noLoginStack"/>
0 голосов
/ 26 сентября 2012

ИСПОЛЬЗУЙТЕ перехватчик TokenSession. Должен обработать результат с помощью result name="invalid.token" в struts.xml в конкретном действии.На странице, с которой генерируется ваше действие на этой странице, вы должны написать <s:token> тег в заголовке

...