JSF 1,0 / 1,1
Просто поместите нужную логику в конструктор bean-объекта области запросов, связанного со страницей JSF.
public Bean() {
// Do your stuff here.
}
JSF 1.2 / 2.x
Использовать аннотированный метод @PostConstruct
для запроса или просмотра bean-объекта. Он будет выполнен после построения и инициализации / установки всех управляемых свойств и внедренных зависимостей.
@PostConstruct
public void init() {
// Do your stuff here.
}
Настоятельно рекомендуется использовать конструктор в том случае, если вы используете инфраструктуру управления bean-компонентами, в которой используются прокси-серверы, такие как CDI, поскольку конструктор может быть вызван не тогда, когда вы этого ожидаете.
JSF 2.0 / 2.1
В качестве альтернативы, используйте <f:event type="preRenderView">
в случае, если вы собираетесь инициализировать также на основе <f:viewParam>
, или когда бин помещается в более широкую область, чем область просмотра (что, в свою очередь, указывает на проблему проектирования, но в стороне). В противном случае, @PostConstruct
тоже прекрасно.
<f:metadata>
<f:viewParam name="foo" value="#{bean.foo}" />
<f:event type="preRenderView" listener="#{bean.onload}" />
</f:metadata>
public void onload() {
// Do your stuff here.
}
JSF 2.2 +
В качестве альтернативы, используйте <f:viewAction>
в случае, если вы собираетесь инициализировать также на основе <f:viewParam>
, или когда бин помещается в более широкую область, чем область просмотра (что, в свою очередь, указывает на проблему проектирования, но в стороне). В противном случае @PostConstruct
тоже отлично.
<f:metadata>
<f:viewParam name="foo" value="#{bean.foo}" />
<f:viewAction action="#{bean.onload}" />
</f:metadata>
public void onload() {
// Do your stuff here.
}
Обратите внимание, что при необходимости это может вернуть String
навигационный регистр. Это будет интерпретироваться как перенаправление (поэтому вам не нужно ?faces-redirect=true
здесь).
public String onload() {
// Do your stuff here.
// ...
return "some.xhtml";
}
Смотри также: