poll不适用于setted var
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了poll不适用于setted var相关的知识,希望对你有一定的参考价值。
我想使用一个包含两个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
}
}
}
此解决方案使用value属性和form in not null,例如:
<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。
谢谢!
答案
我有一个解决方案!
问题在于:<c:set var="bean" value="#{webModule1}" scope="request" />
scope="request"
还不够,根据我的理解,这个范围意味着当调用poll时,会创建一个新的bean引用,并且form
变量为null,因为它不是firstInit()
。
scope="view"
是解决方案。
谢谢你的评论!
以上是关于poll不适用于setted var的主要内容,如果未能解决你的问题,请参考以下文章