Это действительно указанное поведение. Теги <f:xxx>
выполняются во время построения представления. Если вы хотите инициализировать свойства до того, как представление будет построено, то вам нужно выполнить работу в (пост) методе конструктора компонента. Событие предварительного просмотра выполняется перед отображением представления, но задолго до его построения.
Удалите <f:event>
в целом и используйте вместо него initView
a @PostConstruct
.
@PostConstruct
public void initView() {
// ...
}
Он будет запущен сразу после построения bean-компонента и завершения всех инъекций зависимостей, таких как @ManagedProperty
, @Inject
, @EJB
и так далее.