Les composants de valeur perdus au cours de l'ajax de mise à jour

Je suis à l'aide de PrimeFaces 3.3.1 et JSF 2.0 et le serveur utilisé est Oracle Weblogic 11gR1

Ci-dessous mon code.

<p:panel id="personDetailsPanelId" header="#{msg.personDetails}">  
<!-- Radio Button -->  
<h:panelGrid columns="3" style="align:center">  
<h:outputText value="#{msg.accountCategory}" />  
<p:spacer width="10px" />  
<p:selectOneRadio id="singleJointAccountRadioId"  
layout="horizontal"  
value="#{captureAccountDetailBackingBean.accountCategory}">  
<f:selectItems  
value="#{captureAccountDetailBackingBean.accountcategoryList}">  
</f:selectItems>  
<p:ajax process="@this" event="change" update="@form"  
partialSubmit="true" />  
</p:selectOneRadio>  
</h:panelGrid>  
<p:spacer height="30px;" />  
<h:panelGrid id="accountDetailsId" columns="3">  
<h:panelGrid id="firstAccountHolderId" columns="2"  
styleClass="float-left ">  
<p:graphicImage  
value="/com/cas/pages/common/images/person_icon.jpg" />  
<h:outputText value="#{msg.firstAccountHolder}" />  
<!-- Person Name -->  
<h:panelGrid columns="2">  
<h:outputText value="#{msg.nameofPerson}" />  
<span style="color: red;">*</span>  
</h:panelGrid>  
<p:inputText  
value="#{captureAccountDetailBackingBean.accountHolder1.personName}"  
size="25" required="true" />  
<!-- Person Address -->  
<h:panelGrid columns="2">  
<h:outputText value="#{msg.address}" />  
<span style="color: red;">*</span>  
</h:panelGrid>  
<p:inputTextarea  
value="#{captureAccountDetailBackingBean.accountHolder1.personAddress}"  
rows="3" autoResize="false" required="true" />  
<!-- DOB -->  
<h:panelGrid columns="2">  
<h:outputText value="#{msg.dateOfBirth}" />  
<span style="color: red;">*</span>  
</h:panelGrid>  
<p:calendar  
value="#{captureAccountDetailBackingBean.accountHolder1.personDOB}"  
navigator="true" showOn="button" size="6" required="true"  
pattern="dd/MM/yyyy" />  
<!-- Age -->  
<h:panelGrid columns="2">  
<h:outputText value="#{msg.age}" />  
<span style="color: red;">*</span>  
</h:panelGrid>  
<p:inputText  
value="#{captureAccountDetailBackingBean.accountHolder1.personAge}"  
size="2" required="true" />  
</h:panelGrid>  
<p:spacer width="130px;" />  
<h:panelGrid id="secondAccountHolderId" columns="2"  
styleClass="float-left"  
rendered="#{captureAccountDetailBackingBean.accountCategory eq 'Joint'}">  
<p:graphicImage  
value="/com/cas/pages/common/images/person_icon.jpg" />  
<h:outputText value="#{msg.secondAccountHolder}" />  
<!-- Person Name -->  
<h:panelGrid columns="2">  
<h:outputText value="#{msg.nameofPerson}" style="font-size:15px;" />  
<span style="color: red;">*</span>  
</h:panelGrid>  
<p:inputText  
value="#{captureAccountDetailBackingBean.accountHolder2.personName}"  
styleClass="inputText-style" size="25" required="true" />  
<!-- Person Address -->  
<h:panelGrid columns="2">  
<h:outputText value="#{msg.address}" />  
<span style="color: red;">*</span>  
</h:panelGrid>  
<p:inputTextarea  
value="#{captureAccountDetailBackingBean.accountHolder2.personAddress}"  
rows="3" autoResize="false" styleClass="inputText-style"  
size="25" required="true" />  
<!-- DOB -->  
<h:panelGrid columns="2">  
<h:outputText value="#{msg.dateOfBirth}" />  
<span style="color: red;">*</span>  
</h:panelGrid>  
<p:calendar  
value="#{captureAccountDetailBackingBean.accountHolder2.personDOB}"  
navigator="true" showOn="button" size="6"  
styleClass="inputText-style" required="true" />  
<!-- Age -->  
<h:panelGrid columns="2">  
<h:outputText value="#{msg.age}" />  
<span style="color: red;">*</span>  
</h:panelGrid>  
<p:inputText  
value="#{captureAccountDetailBackingBean.accountHolder2.personAge}"  
size="2" styleClass="inputText-style" required="true" />  
</h:panelGrid>  
</h:panelGrid>  
<div style="clear: both;" />  
</p:panel>  

Backing bean code:

public class CaptureAccountDetailBackingBean {  
//For Radio Button  
SelectItem[] accountcategoryList = {new SelectItem("Single", "Single"), new SelectItem("Joint","Joint")};  
String accountCategory;  
AccountHolderDetailVO accountHolder1 = new AccountHolderDetailVO();  
AccountHolderDetailVO accountHolder2 = new AccountHolderDetailVO();  
//setter and getters  
}

AccountHolderDetailVO

public class AccountHolderDetailVO {  
String personName;  
String personAge;  
Date personDOB;   
String personAddress;  
//getter and setter  
}  

Par défaut, le bouton radio sélectionné est "Unique". Et "secondAccountHolderId" panelgrid est affiché lorsque l'utilisateur de cliquer sur "Joint" bouton radio.

Quand j'ai entrer les valeurs dans la "firstAccountHolderId" ou "secondAccountHolderId" panelgrid et changer le bouton radio, les valeurs saisies sont perdues.

Quelle est la portée de votre backing bean? Que voulez-vous dire "perdu"? Perdu à quoi? un backing bean méthode? une mise à jour basé sur ajax? Votre incroyablement grand <h:form/> avec de nombreux composants en cela conduira à la lenteur des réactions et général de chagrin lors du débogage de votre vue JSF. Casser en petits morceaux avec des formes plus petites.

OriginalL'auteur Kumar | 2013-01-06