Les champs de saisie ne conservent les valeurs précédentes que si la validation a échoué

Je suis venu avec un problème étrange. J'ai essayé d'isoler le problème, donc voici mon code simplifié.

public class MyBean {

  private List<Data> dataList;
  Data selectedData;

  public MyBean() {
    dataList = new ArrayList<Data>();
    dataList.add(new Data("John", 16));
    dataList.add(new Data("William", 25));
  }

  public List<Data> getDataList() {
    return dataList;
  }

  public void edit(Data data) {
    selectedData = data;
  }
  public void newData() {
    selectedData = new Data(null, null);
  }

  public Data getSelectedData() {
    return selectedData;
  }

  public class Data {
    String name;
    Integer age;
    Data(String name, Integer age) {
      this.name = name;
      this.age = age;
    }
    public String getName() {
      return name;
    }
    public void setName(String name) {
      this.name = name;
    }
    public Integer getAge() {
      return age;
    }
    public void setAge(Integer age) {
      this.age = age;
    }
  }
}

xhtml:

<rich:modalPanel id="pop">
  <h:form>
    Name: <h:inputText value="#{myBean.selectedData.name}" required="true" id="txtName"/><br/>
    Age : <h:inputText value="#{myBean.selectedData.age}" required="true" id="txtAge"/>
    <a4j:commandButton value="Save"/>
    <a4j:commandButton value="Close" onclick="Richfaces.hideModalPanel('pop');return false;"/>
    <br/>
    <rich:message for="txtName"/><br/>
    <rich:message for="txtAge"/>
  </h:form>     
</rich:modalPanel>

<h:form>
  <rich:dataTable value="#{myBean.dataList}" var="data">
    <rich:column>#{data.name}</rich:column>
    <rich:column>
      <a4j:commandLink value="Edit" action="#{myBean.edit(data)}" reRender="pop" oncomplete="Richfaces.showModalPanel('pop')"/>
    </rich:column>
  </rich:dataTable>
  <a4j:commandButton value="New" action="#{myBean.newData()}" reRender="pop" oncomplete="Richfaces.showModalPanel('pop')"/>
</h:form>

C'est la voie de l'erreur:

  1. Charger la page
  2. Cliquez sur le lien "Modifier" dans la première ligne(popup affiche)
  3. De popup, claire de "l'Âge" et cliquez sur "Enregistrer".(Message affiché)
  4. Cliquez sur annuler(sans remplissage "Âge")
  5. Cliquez sur le deuxième lien.
  6. Maintenant, il montre les données non pertinentes(données précédentes). - C'est le problème
  7. Même quand je clique sur "Nouveau" bouton, il affiche des données incorrectes.

Cela se produit uniquement si une validation est échoué dans la popup.
Est-il une solution pour cela?

source d'informationauteur prageeth