Что такое состояние отображения в JSF, и как это используется?

В JSF существует состояние отображения, связанное с каждой страницей, которая передается назад и вперед с, отправляет и т.д.

Я знаю, что состояние отображения вычисляется с помощью состояний различных средств управления на странице, и что можно сохранить его или сторона клиента или сторона сервера.

Вопрос: как это значение используется? Это используется для проверки значений, отправленных в, отправляют, чтобы гарантировать, что тот же запрос не отправлен дважды?

Кроме того, как это вычисляется - я понимаю, что richfaces может быть вычислен по-другому по сравнению с myfaces, но идея была бы хороша.

Спасибо.

26
задан Matthew Farwell 26 May 2010 в 07:02
поделиться

2 ответа

Вопрос в том, как это значение используется? Используется ли оно для проверки значений, отправленных при submit, чтобы гарантировать, что один и тот же запрос не отправляется дважды?

Первоначальная причина существования viewstate заключается в том, что HTTP не имеет статики. Состояние компонентов при каждом запросе должно поддерживаться тем или иным способом. Либо вы храните состояние в памяти на сервере и привязываете его к сессии, либо сериализуете/десериализуете его в запросе/ответе каждый раз.

AFAIK, состояние представления не используется для обнаружения двойной отправки, но оно могло бы использоваться, если бы вы прикрепили к нему временную метку или что-то подобное.

Состояние просмотра также может быть зашифровано, чтобы убедиться, что клиент не изменит его.

Также, как он вычисляется - я понимаю. что richfaces может быть рассчитан отличается от myfaces, но идея было бы неплохо.

Каждый компонент отвечает за сохранение своего состояния с помощью saveState и restoreState (см. этот туториал). Таким образом, разные наборы компонентов приводят к разным состояниям представления. Аналогично, различные реализации JSF могут привести к различному состоянию представления.

25
ответ дан 28 November 2019 в 07:33
поделиться

Если вы знакомы с JavaScript, вы можете думать о дереве компонентов JSF как о HTML DOM, где HTML-страница определяет начальное состояние, но вы можете изменить его во время выполнения.

Технология просмотра (обычно JSP или Facelets) определяет начальное состояние, но после этого им можно управлять программно. Например, вы можете добавить компонент или установить свойство . Чтобы это работало правильно, состояние просмотра должно сохраняться между запросами.

Состояние просмотра разделено на две части. Первая определяет структуру дерева компонентов:

UIView
 - UIForm
    - UICommand
    - UIInput

Вторая часть определяет состояние компонентов. Они разделены из-за таких компонентов, как UIData, где дочерние элементы могут иметь (например) состояние каждой строки. Это упорядочивается / отменяется с помощью механизмов StateHolder .

12
ответ дан 28 November 2019 в 07:33
поделиться
Другие вопросы по тегам:

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