Тег Seam:token, не уважаясь

Когда я нажимаю кнопку, и затем поражаю кнопку "Назад" браузера к форме и нажимаю ее снова, она отправляет во второй раз, не выдавая надлежащее исключение...

Еще более странный, сам идентификатор формы ОТЛИЧАЕТСЯ, когда я возвращаюсь, который подразумевает, что повторно создал "действительный" идентификатор формы в какой-то момент.

Вот соответствующие нормы: Какие-либо идеи?

<h:form id="accountActivationForm">
    <s:token/>
    <a4j:commandButton id="cancelActivateAccountButton"
        action="#{controller[cancelAction]}"
    image="/images/button-Cancel-gray.gif"
        reRender="#{reRenderList}"
        oncomplete="#{onCancelComplete}" />
        &#160;
    <a4j:commandButton id="activateAccountButton"
        action="#{controller[agreeAction]}"
        image="/images/button-i-agree-continue.gif"
        styleClass="activate-account-button"
        reRender="#{reRenderList}"
        oncomplete="#{onActivationComplete}"/>
</h:form>

Разъяснения:

  • Я наследовал это, таким образом, я пытаюсь изменить его как можно меньше. (Это используется в паре мест.)
  • Каждое действие возвращает представление, не пустое. Я подтвердил это путем продвижения через линию за линией.
  • reRenderList пуст в моем текущем тестовом сценарии.
  • onActivationComplete также пуст.

Я собираюсь быть идущим шаблоном шаблоном, чтобы видеть, сделал ли кто-то его с вложенными формами, потому что у моих коллег были несвязанные проблемы из-за этого, таким образом, не могло повредить устранять это как возможную проблему.

1
задан Jon Bristow 22 May 2010 в 20:09
поделиться

1 ответ

Предполагается, что s: token предотвращает двойную / множественную отправку путем нетерпеливого нажатия кнопки отправки несколько раз в одном запросе или путем обновления результата без перенаправления в webbrowser или повторно отправив кэшированную страницу в историю браузера.

То, что это работает, когда клиент перемещается вперед и назад по истории браузера, просто означает, что страницы с формами не кэшируются в истории браузера клиента и снова запрашиваются со стороны сервера как совершенно новые. Это действительно вернет новый токен. Проверьте сами с помощью HTTP-трекера, такого как в Firebug .

2
ответ дан 3 September 2019 в 00:22
поделиться
Другие вопросы по тегам:

Похожие вопросы: