Когда я нажимаю кнопку, и затем поражаю кнопку "Назад" браузера к форме и нажимаю ее снова, она отправляет во второй раз, не выдавая надлежащее исключение...
Еще более странный, сам идентификатор формы ОТЛИЧАЕТСЯ, когда я возвращаюсь, который подразумевает, что повторно создал "действительный" идентификатор формы в какой-то момент.
Вот соответствующие нормы: Какие-либо идеи?
<h:form id="accountActivationForm">
<s:token/>
<a4j:commandButton id="cancelActivateAccountButton"
action="#{controller[cancelAction]}"
image="/images/button-Cancel-gray.gif"
reRender="#{reRenderList}"
oncomplete="#{onCancelComplete}" />
 
<a4j:commandButton id="activateAccountButton"
action="#{controller[agreeAction]}"
image="/images/button-i-agree-continue.gif"
styleClass="activate-account-button"
reRender="#{reRenderList}"
oncomplete="#{onActivationComplete}"/>
</h:form>
Разъяснения:
Я собираюсь быть идущим шаблоном шаблоном, чтобы видеть, сделал ли кто-то его с вложенными формами, потому что у моих коллег были несвязанные проблемы из-за этого, таким образом, не могло повредить устранять это как возможную проблему.
Предполагается, что s: token
предотвращает двойную / множественную отправку путем нетерпеливого нажатия кнопки отправки несколько раз в одном запросе или путем обновления результата без перенаправления в webbrowser или повторно отправив кэшированную страницу в историю браузера.
То, что это работает, когда клиент перемещается вперед и назад по истории браузера, просто означает, что страницы с формами не кэшируются в истории браузера клиента и снова запрашиваются со стороны сервера как совершенно новые. Это действительно вернет новый токен. Проверьте сами с помощью HTTP-трекера, такого как в Firebug .