2014-11-17 4 views
1

Я использую JSF 2.2 и Primefaces 3,5, и у меня есть проблема с запросом AJAX, когда я обновить родительский компонент:запрос JSF Ajax воссоздает viewscoped компонентов-

<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» и возвращал пустоту, чтобы оставаться в том же представлении («carteleraController» - это ViewScoped bean).

Однако первый запрос ajax при изменении значения компонента p: calendar работает нормально, но следующие запросы воссоздают компонент ViewScoped.

Почему это?

спасибо.

ПРИМЕЧАНИЯ: Если в р: запрос Ajax календаря я обновить компонент самого carteleraOut.xhtml, она работает, но если я обновлю всю PAG_CARTELERA panelgroup, он воссоздает боб.

ответ

1

вы можете попробовать час: 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> 
+0

Wow! Большое вам спасибо. Я давно застрял. Я предполагаю, что это должно быть с рендером всей формы, нарушает область обзора, но я не знаю почему. – choquero70

+0

Знаете ли вы, что форма может быть разделена на две формы? (один внутри cinePreferidoIn.xhtml и другой внутри carteleraOut.xhtml). Я бы предпочел иметь раздельные формы для каждой групповой группы, условно визуализированной. Так было у меня раньше (я использовал полную обратную передачу), но когда я начал использовать ajax, это не сработало, поэтому я переместил формы только в одну форму (но я предпочел бы 2 формы). – choquero70

Смежные вопросы