2 개의 ManagedBeans와 함께 하나의 HTML 페이지를 사용하고 싶습니다. URL의 매개 변수에 따라 JSTL 변수를 통해 bean 이름을 설정하려고합니다. 예를 들면 :설문 조사가 설정된 var에서 작동하지 않습니다.
<c:set var="bean" value="#{webModule1}" scope="request" />
또는
<c:set var="bean" value="#{webModule2}" scope="request" />
확실히이 작품 그래서 나는이 모든 시간을 사용했다 클래스가 :
@ManagedBean(name = "webModule1")
@ViewScoped
public class WebModule1 implements Serializable {
protected WebModulesFormBean form;
@PostConstruct
public void init() {
if (!firstInit()){
this.form= new WebModulesFormBean();
}
//some code
}
public void process() {
if(this.form.isActive()){
//some code
}
}
}
그리고 새로운 :
@ManagedBean(name = "webModule2")
@ViewScoped
public class WebModule2 extends WebModule1 {
public void process() {
if(this.form.isActive()){
//code with some changes
}
}
}
이 솔루션은 값 속성 및 양식과 함께 작동합니다. 나는이 코드 조각 문제가
<p:treeTable value="#{bean.form.root}" var="node" id="modulesTree">
:하지만 예를 들어, null가 아닌 청취자가 호출 될 때
는<p:poll listener="#{bean.process()}" widgetVar="documentOutcome" autoStart="#{bean.form.start}" update="modulesTree" async="false"
interval="1" id="myPoll2" />
, NullPointerException가 나타납니다. 그리고이 문제는 모든 p : poll (일부 있음)에서 발생하므로 메서드 코드에 문제가 없습니다. 초기 변수 'form'이 초기화되고 treeTable이 페이지에 표시되지만 'form'이 null이라는 문제가 있습니다. 따라서 리스너가 호출되면 'form'이 null로 시작됩니다.
감사합니다.
당신은이 코드를'bean.process()'와 공유 할 수 있습니까? 이 메소드가'NullPointerException'을 던질 수도 있습니다. –
@ArvindKatte 게시물을 업데이트했습니다. 의견을 주셔서 감사합니다. – eveillaur
가능하면 예외 메시지를 게시하여 정확한 근본 원인을 확인할 수 없습니다. –