民意调查不适用于已设置的变量

我想使用一个带有两个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。

谢谢!

回答:

我有一个解决方案!

的问题是有: <c:set var="bean" value="#{webModule1}" scope="request" />

scope="request"是不够的,在我的理解这个范围意味着调查被调用时,一个新的bean参考创建并form变量为null,因为它不是一个firstInit()

scope="view"是解决方案。

谢谢您的意见!

以上是 民意调查不适用于已设置的变量 的全部内容, 来源链接: utcz.com/qa/263820.html

回到顶部