Вопрос по jsf-2, jsf, validation, lifecycle – Разница между UIInput # getValue () и getLocalValue () во время проверки

5

Я хотел бы получить иллюстративное объяснение разницы междуgetValue() а такжеgetLocalValue() методыUIInput components в аспекте выполнения проверки нескольких полей:JSF проверить два поля за один раз.

Какая разница в использовании этих методов, если поля уже проверены?ValueHolder API documentation не очень помогает в ответе на это.

Ваш Ответ

1   ответ
6

ЕслиUIInput компонент был предварительно проверен и помечен как недействительный (т.е.isValid() метод возвращаетfalse), тоgetLocalValue() возвращаетсяnull, ноgetValue() возвращает старое значение модели, если оно есть. Если он помечен как действительный, то оба возвращают одно и то же значение, а именно переданное, преобразованное и проверенное значение.

Вы хотите добавить чек наisValid() заранее. Вы можете найти примеры исходного кодаOmniFaces полезно несколько полевых валидаторов. УвидетьValidateMultipleFields ссылка на исходный код в нижней части<o:validateEqual> страница витрины.

See also:

@Tarik: О, вы имеете в виду значения модели? Это происходит на этапе обновления значений модели. Смотрите такжеstackoverflow.com/questions/4749451/…
когда вообще мы должны использовать getValue ()? я видел в блоге, что мы должны использовать getValue () во время кодирования, это единственное место, где мы должны его использовать?
@Tarik: во время проверки. Смотрите также текущий вопрос, & quot; Смотрите также & quot; ссылка иUIInput исходный код:stackoverflow.com/questions/15691126/…
@Tarik: нетsetLocalValue(),setValue() устанавливает локальное значение (то есть в состоянии компонента), которое сбрасывается на этапе обновления значений модели (updateModel() метод).getValue() возвращает локальное значение, если установлено, иначе значение модели. Опять же, см. Источник (и Javadoc).
@Shirgil: имейте в виду, что отправленное значение, "является действительным", локальное значение и "установлено локальное значение" сохраняются в состоянии просмотра JSF. То есть они эффективно видят прицел.

Похожие вопросы