Если вы не используете ajax или по-прежнему используете JSF 1.x, и вам действительно нужно вызвать бизнес-действие в методе cancel()
(т. Е. Просто перезагрузить страницу недостаточно), тогда лучше всего делать ставкудобавить immediate="true"
к кнопке.Таким образом, все поля ввода, которые не имеют immediate="true"
, будут пропущены при обработке.
<h:commandButton value="Cancel" action="#{bean.cancel}" immediate="true" />
В JSF 2.x гораздо лучше отправить форму по <f:ajax>
, что по умолчанию толькообрабатывает @this
вместо @form
.
<h:commandButton value="Cancel" action="#{bean.cancel}">
<f:ajax />
</h:commandButton>
Если вы хотите перейти сюда на другую страницу, добавьте ?faces-redirect=true
к результату в методе cancel()
.
Или, если на самом деле вам вообще не нужно вызывать какие-либо бизнес-действия, просто используйте <h:button>
, в котором вы напрямую указываете (неявный) результат случая навигации.
<h:button value="Cancel" outcome="previouspage" />
Это в основном перезагрузит страницуПОЛУЧИТЬ запрос.<h:button>
не существует в JSF 1.x, но вы также можете просто использовать простой HTML + JS для этого.
См. Также: