JSF / Richfaces / A4j ==> проблема преобразования компонента / поля и повторного рендеринга - PullRequest
0 голосов
/ 10 марта 2011

У меня есть поле ввода на странице JSF, как показано ниже (отображается на BigDecimal на базовом компоненте)

    <h:inputText disabled="#{volumeBean.grossVolumeDisabled}" id="grossVolume" size="10" validateOnExit="true" value="#{volumeBean.enteredGrossVolume}" >
    <a4j:support ajaxSingle="true" event="onblur" ignoreDupResponses="true" oncomplete="checkFieldValidation(this)" onsubmit="updateDirty()"/>
    </h:inputText>

И a4j: commandButton для "обновления" всех данных из базы данных на странице:

    <a4j:commandButton accesskey="T" action="#{volumeBean.revert}" button-type="ajax" disabled="#{volumeBean.revertDisabled}" id="volumeBean_reset"         immediate="true" reRender="volumesTable" value="#{msg.button_RESET}"/>

Вот шаги по воспроизведению моей проблемы: И, пожалуйста, обратите внимание, что ошибка возникает независимо от того, установлен ли атрибут aRj на a4j: support

Вот шагиВоспроизвести - просто чтобы уточнить:

  1. перейти к экрану, где существует поле ввода BigDecimal
  2. введите aa в поле (должно быть числом, но намеренно ставить нечисловые символы)
  3. вкладка за пределами поля
  4. обратите внимание, что сообщение об ошибке 'aa' не является допустимым netVolume
  5. нажмите кнопку RESET
  6. всеизмененные поля имеют свои исходные значения, КРОМЕ тех, в которые введены нечисловые данные
  7. , если только пользователь вручную не удалит нечисловые данные в полях или не обновит весь экран, "bрекламные данные "палочки

Ответы [ 2 ]

0 голосов
/ 11 марта 2011

Попробуйте добавить параметр ajaxSingle="true" к кнопке. Я обнаружил, что immediate="true" недостаточно для обхода проверки на компонентах ajax.

0 голосов
/ 10 марта 2011

Когда вы делаете сброс, вы запускаете Ajax-запрос, вся форма отправляется, и вы снова получаете ошибку проверки. Таким образом, поле все еще имеет старое (неправильное) значение.

...