Как получить доступ к значению ui:param в инициализации контроллера компонента JSF2 PostConstruct?

У меня есть композит, который показывает детали для конкретного пользователя в dataTable. Для этого я собираю данные в методе инициализации @PostConstruct.

@Override // Super is @PostConstruct
protected View initialise() {
    ...
    person = personFacade.getPerson(getPersonId()); // Getter for personID (the param)

    ...

    return view;
}

Я передаю параметр в include:

<p:overlayPanel for="personDetails" showEvent="click" hideEvent="click" appendTo="@(body)">
<ui:include src="personDetails.xhtml">
   <ui:param name="personId" value="#{viewController.personID}"/>
</ui:include>
</p:overlayPanel>

Но мне нужен идентификатор человека, который передается композиту в этом инициализаторе. Каков наилучший способ справиться с этим? Это кажется чем-то довольно простым, поэтому я предполагаю, что для этого должен быть простой способ/лучшая практика.

Я попытался получить из FaceletContext, как обсуждалось здесь: Как получить значение ui:param в компоненте поддержки

Но параметр никогда не добавляется в FaceletContext. Я подумал, что это может быть проблема слишком ранней загрузки контроллера, поэтому я лениво загрузил панель оверлея (dynamic=true). Но даже тогда в контекст не добавлялся ни один параметр.


person Kenny Steegmans    schedule 03.12.2020    source источник