我使用JSF 2.2和Primefaces 3.5,当我更新父组件时,我遇到了ajax请求的问题:
<h:panelGroup id="PAG_CARTELERA" layout="block">
<h:form id="FRM_CARTELERA">
<h:panelGroup rendered="#{!carteleraController.existeCookieCinePref}">
<ui:include src="/paginas/cartelera/cinePreferidoIn.xhtml" />
</h:panelGroup>
<h:panelGroup rendered="#{carteleraController.existeCookieCinePref}">
<ui:include src="/paginas/cartelera/carteleraOut.xhtml" />
</h:panelGroup>
</h:form>
</h:panelGroup>
在carteleraOut.xhtml页面中我有:
<p:calendar id="CART_FECHA" value="#{carteleraController.fechaConsulta}"
maxlength="10"
size="10"
locale="es"
pattern="dd/MM/yyyy"
navigator="true"
showOn="button"
showButtonPanel="true">
<f:converter converterId="calendarConverter" />
<p:ajax process="@this" update=":PAG_CARTELERA" event="dateSelect" listener="#{carteleraController.consultarOtroDiaAction}" />
在“consultarOtroDiaAction”监听器中,我设置了“existeCookieCinePref”布尔字段并返回void以保持在同一视图中(“carteleraController”是ViewScoped bean)。
但是,当我更改p:calendar组件的值时,第一个ajax请求正常工作,但以下请求会重新创建ViewScoped bean。
为什么会这样?
谢谢。
注意:如果在p:calendar ajax请求中我更新了carteleraOut.xhtml本身的一个组件,它可以工作,但如果我更新整个PAG_CARTELERA面板组,它会重新创建bean。
答案 0 :(得分:1)
你可以在h:form
中尝试h:panelGroup<h:form id="FRM_CARTELERA">
<h:panelGroup id="PAG_CARTELERA" layout="block">
<h:panelGroup rendered="#{!carteleraController.existeCookieCinePref}">
<ui:include src="/paginas/cartelera/cinePreferidoIn.xhtml" />
</h:panelGroup>
<h:panelGroup rendered="#{carteleraController.existeCookieCinePref}">
<ui:include src="/paginas/cartelera/carteleraOut.xhtml" />
</h:panelGroup>
</h:panelGroup>
</h:form>