원하는 내용 : 범위가 다른 관리 빈 뷰를 사용하십시오.두 페이지에 ManagedBean ViewScoped
이유 : 한 페이지에서 나는 단지 databe로부터 목록을 얻습니다. 그리고 나는이 일을 위해서만 다른 관리 빈을 원하지 않습니다.
시나리오 :
의 관리 빈 :
import javax.annotation.PostConstruct;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ManagedProperty;
import javax.faces.bean.ViewScoped;
import javax.faces.context.FacesContext;
@ManagedBean
@ViewScoped
public class MyManagedBean implements Serializable {
@PostConstruct
public void inicio() {
//used in page page1.xhtml
if (FacesContext.getCurrentInstance().getViewRoot().getViewId().contains("page1")) {
methodDoThingsPage1();
}
//used in page2.xhtml
if (FacesContext.getCurrentInstance().getViewRoot().getViewId().contains("page2")) {
methodDoThingsPage2();
}
}
public String detail(Object object) {
do(object);
return "page2?faces-redirect=true";
}
}
내 페이지 :
내 page1.xhtml
<p:column>
<p:commandButton action="#{myManagedBean.detail(object)}">
</p:column>
내가 생각한 것 :page1
의 버튼을 클릭하면 postconstruct에서 methodDoThingsPage2
만 해고됩니다. 그러나 두 방법 모두 methodDoThingsPage1
및 methodDoThingsPage2
이 (가) 해고되고 있습니다.
무엇이 잘못 되었나요? 세부 방법이 page2
으로 리디렉션되는 이유는 methodDoThingsPage1
도 해고 되었습니까?
<f:metadata>
<f:viewAction action="#{MyManagedBean.init}"/>
</f:metadata>
이 JSF 파일의 시작 부분에이 라인을 추가하고 관리 빈에서 @PostConstruct
주석을 제거합니다
는이를 사용하여 더 나은 연습을? – ulima69
일단 관리 빈에서'@ PostConstruct'에 문제가 발생하면 해결책이되었습니다. 나는 당신의 문제가 다른 해결책을 가지고 있다고 생각합니다. – Everv0id