2009-08-22 5 views
3

Я разрабатываю веб-приложение с использованием A4J, Richfaces. Одно из моих требований: мне нужно проверить, изменил ли пользователь какие-либо значения в форме, когда он пытается перейти от страницы.Перехват a4j: commandButton request

У меня есть кнопки сохранения и отмены на странице. Я использую кнопку a4j:command для отмены функциональности. При нажатии на кнопку отмены нужно сделать ниже вещи

  1. Проверьте, если пользователь изменил что-либо в форме (это я делаю с помощью JavaScript и иметь флаг, если пользователь изменил какие-либо значения)
  2. Показать окно подтверждения (JavaScript подтвердить со значениями «вы действительно хотите отказаться от изменений - ДА НЕТ») при изменении пользователем формы значения
  3. Если пользователь говорит ДА, а затем представить форму с помощью AJAX (с помощью a4j)

Мой a4j Код кнопки команды выглядит так:

<a4j:commandButton action="MyClass.cancel_action" 
    onclick="checkIsPageChanged()"/> 

Проблема здесь есть, при использовании с помощью a4j:commandButton, я не могу назвать промежуточную яваскрипта функцию (функцию, которая проверяет, является ли пользователь обновил любое окно подтверждения значения и отображает), а затем отправить запрос с помощью Ajax. Я посмотрел на код, сгенерированный JSF и код, как (не точно, но syntact)

<input type="button" 
    onclick="checkIsPageChanged();AJAX.submit('')/> 

Дело в том, когда я нажимаю на кнопку, он звонит только checkIsPageChanged() и не вызывая AJAX.submit().

Любое обходное решение для этого поможет мне.

Заранее спасибо.

ответ

3

Чтобы быть более точным, мы можем использовать:

onclick="if(!isPageChanged()) {return false}" 

Возвращение ложь не подаст запрос.

+0

Ваш код работает, но следует уточнить, что возврат 'true' также не отправит запрос. См. Https://community.jboss.org/thread/3755?start=0&tstart=0&_sscc=t Фактически, 'onclick ="! IsPageChanged() "' будет _not_ работать. –

3

Использовать a4j:jsFunction и называть это от вашего a4j:commandButton, когда checkIsPageChanged() возвращает true.

например.

<a4j:commandButton action="MyClass.cancel_action" 
    onclick="if(checkIsPageChanged()) { cancel(); }"/> 
<a4j:jsFunction name="cancel" action="MyClass.cancel_action"/> 
Смежные вопросы