Ответ 1
Это не нормальное поведение. Это произойдет, если вы привяжете атрибуты обработчика тэга или атрибут binding
компонентов JSF к свойству области видимости bean, а частичное сохранение состояния включено. Это называется вопрос 1492, который исправлен в (предстоящем) Mojarra 2.2.
В общем, вы можете распознать обработчики меток из-за отсутствия атрибута rendered
. Например. <c:if>
, <f:validator>
, <ui:include>
и т.д. Если вы привязываете атрибут такого обработчика тега к свойству видимого вида bean, как следует
<c:if test="#{viewScopedBean.something}"></c:if>
<h:inputText><f:validator binding="#{viewScopedBean.validate}" /></h:inputText>
<ui:include src="#{viewScopedBean.includePage}" />
то область просмотра bean будет воссоздана каждый раз, когда представление должно быть восстановлено из частично сохраненного состояния. Это проблема с куриным яйцом с областью видимости, потому что для получения нужного вида bean он должен быть извлечен из восстановленного представления.
Это также произойдет, если вы ссылаетесь на свойство видимого вида bean в атрибуте binding
компонента JSF.
<h:someComponent binding="#{viewScopedBean.someComponent}" />