Значения JSF 2.0 не представлены - PullRequest
1 голос
/ 13 сентября 2011

Я изо всех сил пытаюсь обновить свой бин новыми значениями страницы.У меня есть две кнопки отправки на моей странице, и я переключаю, какая из них отображается на основе логического значения для режима, в котором находится моя страница. Когда моя страница только в обновлении (без проверки), я показываю кнопку отправки, которая имеет немедленный = «true»,Когда страница находится в режиме обработки (проверка), я показываю кнопку отправки, которая не имеет немедленного = «true».Проблема, с которой я сталкиваюсь, заключается в том, что когда я нахожусь в режиме обновления (без проверки), значения в полях ввода не устанавливаются в компоненте.Все, что я хочу сделать в этом режиме, это сохранить страницу как есть и выйти.Проверка не требуется, потому что информация на этой странице не готова к обработке или «реальному использованию», если хотите.Тем не менее, если у меня есть страница в режиме обработки (проверки), то все работает, как задумано.Значения отправлены и сохранены.

Я пока не публикую ни одного кода, так как в том, что я пытаюсь сделать, нет ничего особенного.У меня просто есть привязка значения, которая указывает на простой метод получения / установки.Мой бин находится в @ ViewScope.

Я пытался использовать примеры BalusC в своем отличном посте на блоге: debug-jsf-lifecycle .Помещение немедленного = «истина» в поля ввода не влияет на нажатие кнопки «Отправить» с немедленным = «истина».Все и все, хотя, как я понимаю, это немедленно = «true» в UICommand - это то, что говорит приложению пропустить проверку или нет.Размещение его в полях ввода просто делает проверку быстрее.Я что-то упустил?

Есть идеи?Любая помощь в этом наиболее ценится!

Особенности приложения:
JSF 2.0.3
Tomcat 6.0.14

1 Ответ

1 голос
/ 13 сентября 2011

immediate="true" не предназначен для отключения проверки. Предполагается либо расставить приоритеты проверки, либо вообще пропустить обработку ввода. См. Также резюме внизу статьи.

Вам нужно отключить проверку, установив required="false" или <f:validator disabled="true">. Вот пример, который предполагает, что у вас есть свойство boolean process, которое представляет состояние формы:

<h:inputText value="#{bean.value1}" required="#{bean.process}" />
<h:inputText value="#{bean.value2}" required="#{bean.process}">
    <f:validator validatorId="someValidatorId" disabled="#{!bean.process}" />
</h:inputText>
...

Таким образом, поля не являются обязательными и не будут проверяться, когда process оценивает false.

...