我想使用一個帶有兩個ManagedBeans的html頁面。根據URL中的參數,我想通過JSTL變量設置bean名稱。例如:民意調查不適用於已設置的變量
<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">
但是我有這段代碼的問題:
<p:poll listener="#{bean.process()}" widgetVar="documentOutcome" autoStart="#{bean.form.start}" update="modulesTree" async="false"
interval="1" id="myPoll2" />
當監聽器被調用,NullPointerException異常出現。 這個問題與所有的p:民意調查(我有幾個),所以這是不是方法代碼的問題。 問題在於'form'爲null,儘管在開始時變量'form'被初始化並且treeTable顯示在頁面上。所以當調用監聽器時,'form'開始變爲null。
謝謝!
你可以分享'bean.process()'這個代碼。可能這種方法拋出'NullPointerException' –
@ArvindKatte我更新了帖子。感謝您的評論。 – eveillaur
如果可能發佈異常消息,無法確定確切的根本原因 –