Как пропустить проверку при нажатии определенной кнопки? - PullRequest
27 голосов
/ 19 мая 2011

У меня есть форма с валидатором на одно поле.У меня есть два h:commandButton с: ОК и Отмена.Когда я ввожу неправильные данные и нажимаю Отмена, я получаю сообщение проверки.Что я должен сделать, чтобы валидатор не запускался при нажатии кнопки «Отмена»?

1 Ответ

58 голосов
/ 19 мая 2011

Если вы не используете 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 для этого.

См. Также:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...