简而言之就是这个问题 当我重视菜单的更改时,它会在辅助bean中再次执行post-constructor,然后执行方法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?如果post-constructor一次调用,为什么每次从菜单中选择它都会调用它? 提前谢谢。
答案 0 :(得分:1)
当每个请求的属性绑定到标记处理程序的属性(JSTL <c:forEach>
,Facelets <ui:include>
,JSF <f:validateXXX>
时,将在每个请求上重新创建视图范围的bean,等)或JSF UI组件的binding
或id
属性(<h:someComponent>
等)。
这与JSF issue 1492有关。您可以通过禁用特定视图的部分状态保存或通过查找实现所需功能要求的其他方法来解决此问题。