JSF: перенаправление JS не работает для события onclick h: commandButton - PullRequest
0 голосов
/ 31 августа 2011

Миграция с a4j:commandLink на h:commandButton проблема.

этот рабочий случай:

<a4j:commandLink  event="onclick" onclick="if (!confirm('#{resourceBundle.agreement_cancel_message}')) return false;" oncomplete="window.location.href='menu?agreementId='+ agreementId;"/>

этот случай с h:commandButton не работает, текущая страница просто обновлена:

<h:commandButton onclick="if (!confirm('#{resourceBundle.agreement_cancel_message}')) return false;window.location.href='menu?agreementId='+ agreementId;"/>

Как я знаю, я не могу использовать oncomplete для h:commandButton вообще.

Ответы [ 2 ]

3 голосов
/ 31 августа 2011

Вам необходимо всегда return false, чтобы предотвратить действие кнопки по умолчанию (отправка формы).

<h:commandButton onclick="if(confirm('#{resourceBundle.agreement_cancel_message}'))window.location.href='menu?agreementId='+ agreementId;return false;"/>

(размещение {} вокруг тела if может улучшить читаемость)

Кстати, вы, кажется, никогда не вызываете метод действия bean-компонента. Почему вы вообще используете <h:commandButton>

<button onclick="if(confirm('#{resourceBundle.agreement_cancel_message}'))window.location.href='menu?agreementId='+ agreementId;return false;"/>
0 голосов
/ 31 августа 2011

Страница обновлена, потому что обработчик событий ввода по умолчанию работает.

Попытайтесь предотвратить поведение отправки ввода (верните false; в конце):

<h:commandButton onclick="if (!confirm('#{resourceBundle.agreement_cancel_message}')) return false;window.location.href='menu?agreementId='+ agreementId; return false;"/>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...