У меня есть страница, на которую я хочу включить часть страницы (в данном случае нижний колонтитул) в зависимости от значений, заданных параметром представления.
У меня инициализируется мой вспомогательный компонент ViewScoped
на preRenderView
<f:metadata>
<f:viewParam name="racecode" value="#{displayResults.racecode}" />
<f:event type="preRenderView" listener="#{displayResults.init}" />
</f:metadata>
Это запрашивает базу данных, чтобы получить имя нижнего колонтитула, которое будет включено. Затем это используется следующим образом:
<h:panelGroup id="customFooter" display="block">
<ui:include src="#{displayResults.customFooter}" />
</h:panelGroup>
Это всегда дает мне недостающую страницу. Но если я ввожу имя страницы вручную, оно работает. То же самое, если я заменю ui:include
на h:outputText
.
Я понимаю, что это как-то связано с фазами JSF и что на момент выполнения ui:include
значение еще не установлено. (Чтение и лучшее понимание фаз входит в мой список TODO).
Вопрос остается. Как я могу сделать что-то в этом роде. Использовать bean-компонент viewParam, запрашивать базу данных и использовать это значение в ui:include
?