페이지로드시 JSF 관리 Bean 조치 호출
페이지가로드 될 때 JSF 관리 Bean 조치를 실행하는 방법이 있습니까?
관련이 있다면 현재 JSF 1.2를 사용하고 있습니다.
JSF 1.0 / 1.1
JSF 페이지와 연관된 요청 범위 Bean의 생성자에 원하는 로직을 넣으십시오.
public Bean() {
// Do your stuff here.
}
JSF 1.2 / 2.x
@PostConstruct
요청에 어노테이션이있는 메소드를 사용 하거나 범위가 지정된 Bean을보십시오. 모든 관리 속성 및 주입 된 종속성의 생성 및 초기화 / 설정 후에 실행됩니다 .
@PostConstruct
public void init() {
// Do your stuff here.
}
생성자가 예상 한 시간에 호출되지 않을 수 있으므로 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";
}
또한보십시오:
- 페이지로드시 Backing Bean에서 GET 쿼리 문자열 URL 매개 변수를 어떻게 처리합니까?
- <f : metadata>, <f : viewParam> 및 <f : viewAction>을 어디에 사용할 수 있습니까?
- 네이티브 JavaScript를 사용하여 HTML DOM 이벤트에서 JSF 관리 빈을 호출하는 방법은 무엇입니까? -실제로
load
페이지로드 중이 아닌 HTML DOM 이벤트 중에 Bean 액션 메소드를 실행하는 데 관심이있는 경우 .
또 다른 쉬운 방법은 뷰가 렌더링되기 전에 메서드를 실행하는 것입니다. sessionScope의 경우 postConstruct가 매 세션마다 한 번만 실행되기 때문에 이것은 postConstruct보다 낫습니다. 페이지가로드 될 때마다 실행됩니다. 이것은 JSF 1.2가 아닌 JSF 2.0에만 해당됩니다.
이것이 방법입니다.
<html xmlns:f="http://java.sun.com/jsf/core">
<f:metadata>
<f:event type="preRenderView" listener="#{myController.onPageLoad}"/>
</f:metadata>
</html>
그리고 myController.java에서
public void onPageLoad(){
// Do something
}
편집-이 페이지의 질문에 대한 해결책은 아니지만 더 높은 버전의 JSF를 사용하는 사람들을 위해 이것을 추가합니다.
JSF 2.2에는 viewAction
.
<f:metadata>
<f:viewAction action="#{myController.onPageLoad}" />
</f:metadata>
@PostConstruct는 Bean이 생성 될 때 처음에 한 번 실행됩니다. 해결책은 Unused 속성을 만들고이 속성의 Getter 메서드에서 작업을 수행하고 다음과 같이 .xhtml 파일에이 속성을 추가하는 것입니다.
<h:inputHidden value="#{loginBean.loginStatus}"/>
그리고 당신의 콩 코드에서 :
public void setLoginStatus(String loginStatus) {
this.loginStatus = loginStatus;
}
public String getLoginStatus() {
// Do your stuff here.
return loginStatus;
}
calling bean action from a will be a good idea,keep attribute autoRun="true" example below
<p:remoteCommand autoRun="true" name="myRemoteCommand" action="#{bean.action}" partialSubmit="true" update=":form" />
ReferenceURL : https://stackoverflow.com/questions/2451154/invoke-jsf-managed-bean-action-on-page-load
'Programing' 카테고리의 다른 글
Java EE 6에 대한 모든 참조 구현 목록은 어디에서 찾을 수 있습니까? (0) | 2020.12.30 |
---|---|
Python의 상속 된 클래스에서 기본 클래스 메서드 (및 생성자)를 올바르게 호출하는 방법은 무엇입니까? (0) | 2020.12.30 |
WPF C # : 끌어서 놓기를 통해 목록 상자의 항목 재정렬 (0) | 2020.12.30 |
다른 파일의 클래스에서 함수를 가져 오시나요? (0) | 2020.12.30 |
요소의 텍스트 노드 숨기기 (하위 제외) (0) | 2020.12.30 |