【问题标题】:post-constructor calls many times构造函数多次调用
【发布时间】:2012-09-24 16:13:52
【问题描述】:

简而言之就是问题所在 当我更改菜单的值时,它会在支持 bean 中再次执行后构造函数,然后执行方法 fillAreas 并使用视图范围。

<p:selectOneMenu id="governate" value="#{add.selectedGovern}"  style="height:26px; text-align: right; width: 303px;"
                                                     valueChangeListener="#{add.fillAreas}" rendered="#{languageBean.isDefaultLanguage==true}" immediate="true" >  
                                        <f:selectItem itemLabel="---#{prompts._select} ---" itemValue="0"/>
                                        <f:selectItems value="#{add.governrateList}" var="govern" itemLabel="#{govern.governrateName}" itemValue="#{govern.governrateId}" />  
                                        <f:ajax  immediate="true"/>

                                    </p:selectOneMenu>

我能做些什么来防止调用 post-constructor ?如果后构造函数调用一次,为什么每次我从菜单中选择它都会调用它? 提前致谢。

【问题讨论】:

  • 后构造函数是指ViewScoped bean 的后构造函数?
  • 是的,我的 ViewScoped bean 的后构造函数。

标签: java ajax jsf-2 primefaces ajax4jsf


【解决方案1】:

当视图范围 bean 的属性绑定到标记处理程序的属性(JSTL &lt;c:forEach&gt;、Facelets &lt;ui:include&gt;、JSF &lt;f:validateXXX&gt; 等)或 @ JSF UI 组件的 987654326@ 或 id 属性(&lt;h:someComponent&gt; 等)。

这与JSF issue 1492 有关。您可以通过禁用特定视图的部分状态保存来解决它,或者通过寻找替代方法来实现所需的功能需求。

另见:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-17
    • 2018-08-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多