Как различные фазы жизненного цикла JSF ведут себя в представлении без состояния, содержащем форму

Если у меня есть представление без состояния в JSF, содержащее форму. Как будут вести себя различные фазы, когда я заполнил форму и отправил ее? так как состояние представления нигде не хранится, как теперь будут работать фазы "значения запроса appy", "update model" и т. д.?

1 ответ

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

Для разработчика главное отличие состоит в том, как @ViewScoped бобы будут вести себя. Они будут в представлении без гражданства вести себя так же, как @RequestScoped фасоль. Так что вы просто сделаете их @RequestScoped сразу. Кроме того, любые программные изменения состояния дерева компонентов не будут сохраняться для обратной передачи, но разработчики не должны программно манипулировать деревом компонентов в любом случае (например, binding, findComponent()и тд, это все просто подозрительно).

Просто относитесь к такой форме, как будто вы можете использовать ее только с @RequestScoped боб. В случае, если вы связываете условные атрибуты, такие как rendered, disabled а также readonly к свойству bean-компонента и изменяете его через ajax в том же представлении, тогда вам нужно убедиться, что вы повторно инициализируете те же свойства bean-компонента (читай: просмотр состояния области) во время bean-компонента @PostConstruct, В частности, JSF как часть защиты от взломанных запросов перепроверит их перед применением значений запроса. Одним из способов является их передача через скрытые поля ввода и ручное извлечение в качестве параметров запроса (в основном вы заново изобретаете javax.faces.ViewState сделал). Но вы должны понимать, что это открывает возможности для хакеров манипулировать ими. Это особенно вредно, если, например, условный рендеринг командной кнопки только для администратора становится зависимым от простого параметра запроса вместо состояния просмотра JSF таким образом (преувеличенный пример, но он должен дать картину).

Смотрите также:

Другие вопросы по тегам