0

简而言之,这里的问题是当我改变菜单的值时,它在支持 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 ?如果后构造函数调用一次,为什么每次我从菜单中选择它都会调用它?提前致谢 。

4

1 回答 1

1

<c:forEach>当视图范围 bean 的属性绑定到标记处理程序(JSTL 、Facelets <ui:include>、JSF<f:validateXXX>等)的属性或JSF UI 组件(等)的binding或属性时,将在每个请求上重新创建视图范围 bean 。id<h:someComponent>

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

也可以看看:

于 2012-10-03T18:15:13.203 回答