Je crée une application Web dans Seam mais j'ai rencontré un problème que je n'arrive pas à résoudre.La valeur du formulaire n'a pas été transmise à Seam bean après a4j reRender
J'ai un formulaire JSF où le client peut sélectionner un type de réservation via une zone de liste déroulante. En fonction de la valeur sélectionnée, les autres composants du formulaire sont rendus. Par exemple: le client sélectionne Heures comme type de réservation, un panelGroup est rendu où le client peut sélectionner une heure de début et une heure de fin. Mais si le client sélectionne «partie de la journée» comme type de réservation, un selectOneMenu est rendu où le client peut sélectionner une partie de la journée (matin, après-midi, soir)
Le puits de réadressage mais les valeurs des composants avec un rendu conditionnel ne sera pas passé au bean. Ils restent des valeurs nulles.
C'est le code que je parle:
<s:div id="spot"
rendered="#{selectedProduct.productType.name eq 'Flex Spot'}">
<h:panelGrid columns="2">
<h:outputText value="Reservation Type" />
<h:selectOneMenu value="#{selectedPeriodPart}">
<s:selectItems
value="#{productManager.getAvailableDayPartsSpot()}"
var="daypart"
label="#{daypart.label}"></s:selectItems>
<s:convertEnum />
<a4j:support ajaxSingle="true"
event="onchange"
action="#"
reRender="spot">
</a4j:support>
</h:selectOneMenu>
<h:outputText id="date_spot" value="Date" />
<a4j:outputPanel id="calendar_spot" layout="block">
<rich:calendar value="#{reservation.reservationPeriod.startDate}"
locale="en" cellWidth="24px"
cellHeight="22px"
style="width:200px" />
</a4j:outputPanel>
<h:outputText rendered="#{selectedPeriodPart eq 'DAY_PART'}"
value="Daypart" />
<h:selectOneMenu value="#{selectedDaypart}"
rendered="#{selectedPeriodPart eq 'DAY_PART'}">
<f:selectItem id="si_morning" itemLabel="Morning (6:00 - 12:00)"
itemValue="morning" />
<f:selectItem id="si_afternoon"
itemLabel="Afternoon (12:00 - 18:00)" itemValue="afternoon" />
<f:selectItem id="si_evening" itemLabel="Evening (18:00 - 00:00)"
itemValue="evening" />
</h:selectOneMenu>
<h:outputText rendered="#{selectedPeriodPart eq 'HOURS'}"
value="Hours" />
<h:panelGroup id="hours_spot"
rendered="#{selectedPeriodPart eq 'HOURS'}">
<ui:include src="/includes/reservation/select_hours.xhtml" />
</h:panelGroup>
</h:panelGrid>
</s:div>
Note: La valeur du calendrier ne se repassée à la fève, mais la valeur de ce morceau de code ne (ne si vous supprimez le rendu conditionnel):
selectOneMenu value="#{selectedDaypart}" rendered="#{selectedPeriodPart eq 'DAY_PART'}"
Merci d'avoir répondu à la question =) Il ne résout pas mon problème = ( Pour faire des choses: Le backing bean est un bean session stateful (ejb). Avec un champ de conversation J'ai essayé d'emballage
selectOneMenu value="#{selectedDaypart}"
dansa4j:outputPanel
et mettre le rendu conditionnel sur ce composant, mais cela n'a pas fonctionné non plus – CasperDésolé, ne peut pas aider beaucoup plus que simplement suggérer d'exécuter un débogueur.Au moins, vous savez maintenant où chercher la cause du problème et comment le réparer: assurez-vous que l'attribut 'rendered' du composant en question n'évalue pas' false' dans la requête suivante. – BalusC