Ответ 1
JSF 1.0/1.1
Просто поместите нужную логику в конструктор запроса scope 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>
тоже, или когда bean помещается в более широкую область действия, чем область представления (что, в свою очередь, указывает на проблему с дизайном, но в стороне). В противном случае a @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>
тоже, или когда bean помещается в более широкую область действия, чем область представления (что, в свою очередь, указывает на проблему с дизайном, но в стороне). В противном случае a @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";
}
См. также:
- Как обрабатывать параметры URL-строки строки запроса GET при поддержке bean при загрузке страницы?
- Что может < f: metadata > , < f: viewParam > и < f: viewAction > для использования?
- Как вызвать управляемый JSF bean в событии HTML DOM с использованием родного JavaScript? - в случае, если вы действительно заинтересованы в выполнении действия bean метод во время события HTML DOM
load
, а не во время загрузки страницы.