轮询不适用于设置的变量



我想使用一个带有两个托管的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
        }
    }
} 

该解决方案可与值属性合作,并在非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:民意调查(我有几个),因此这不是方法代码的问题。问题是"形式"是无效的,尽管在开始变量"形式"初始化,并且在页面上显示可导航。因此,当侦听器被调用时,"表单"开始为null。

谢谢!

我有解决方案!

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

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

scope="view"是解决方案。

谢谢您的评论!

相关内容

  • 没有找到相关文章

最新更新