с динамическим src не вызывает сеттеры на основе - PullRequest
2 голосов
/ 22 марта 2011

У меня есть first.jsf, в который я включаю second.xhtml следующим образом:

<ui:include src="#{firstBean.srcForSecond}" />

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

My second.xhtml содержит простое поле ввода:

<h:inputText id="firstname" value="#{secondBean.firstName}" />

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

Однако, если я изменю ui:include следующим образом, это сработает:

<ui:include src="second.xhtml" />

Но мне нужно использовать выражение EL, так как оно может быть second.xhtml или third.xhtml в зависимости от некоторых условий.

Кто-нибудь может объяснить, что происходит и как это исправить?

1 Ответ

2 голосов
/ 22 марта 2011

Вам нужно сделать боб #{firstBean} a @ViewScoped вместо @RequestScoped. Таким образом вы гарантируете, что #{firstBean.srcForSecond} оценивает то же самое в следующем запросе. Именно он переоценивается на этапе применения значений запроса формы отправки. Если он оценивается по-другому, то изначально включенные компоненты не могут быть найдены, и ничего не будет установлено / вызвано.

...