【发布时间】:2015-01-14 18:51:20
【问题描述】:
我使用 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。 p>
【问题讨论】: