Между jsf страницей и управляемым компонентом, почему метод получателя называют дважды

У меня есть jsf страница с формой, имеет outputtext в нем. Значение outputtext компонента называют от отступающего боба (или управляемый компонент). Я знаю, когда я кодирую его, поскольку # {MyBean.myString} Jsf переименовывает его, и называет getMyString () методом. Однако странная вещь, когда я поместил точку останова в метод получателя этого компонента, я вижу, что это называют дважды во время страницы, представляется. outputtext находится в h:form, и это - единственный компонент, который является, связывают с backingbean. Я имею в виду, столь странно, что jsf должен получить значение, когда это сначала приходит к методу получателя, однако это должно перейти к методу получателя дважды. Можно ли объяснить, какова причина этого поведения в jsf?

Любая справка ценилась бы, С наилучшими пожеланиями, Baris

5
задан Javatar 7 May 2010 в 07:10
поделиться

1 ответ

Getter, как уже понятно из его названия, просто находится там с чистой целью получить данные. JSF не кэширует эти данные. Он будет вызывать его всякий раз, когда это необходимо. Стоимость вызова геттера на практике ничтожна - если только вы не делаете что-то большее, чем возврат данных, например, не обращаетесь к БД каждый раз, тогда эту логику следует вынести из геттера или превратить в ленивую загрузку.

В случае отправки формы, первый вызов get обычно выполняется на этапе валидации для проверки наличия начального значения, чтобы JSF мог обработать событие изменения значения. Второй вызов обычно выполняется на этапе рендеринга ответа для отображения значения модели в представлении.

Вы можете найти эту статью, чтобы узнать больше о жизненном цикле JSF. Вы можете найти этот ответ, чтобы узнать больше о способах предварительной обработки/инициализации в backing bean.

16
ответ дан 18 December 2019 в 10:42
поделиться
Другие вопросы по тегам:

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