2015-04-17 1 views
1

J'ai une simple page de création et un bouton de sauvegarde. La première fois que je lance une application, tout va bien, mais après cela, il conserve les valeurs de la création précédente.Pourquoi la page JSF conserve les anciennes données?

<ui:composition template="/template.xhtml"> 
    <ui:define name="title"> 
     <h:outputText value="#{bundle.CreateProjectsTitle}"></h:outputText> 
    </ui:define> 

    <ui:define name="body"> 
     <h:panelGroup id="messagePanel" layout="block"> 
      <h:messages errorStyle="color: red" infoStyle="color: green" layout="table"/> 
     </h:panelGroup> 

     <h:form> 
      <h:panelGrid columns="2"> 
       <h:outputLabel value="#{bundle.CreateProjectsLabel_projectName}" 
           for="projectName"/> 

       <h:inputText id="projectName" 
           value="#{projectsController.selected.projectName}" 
           title="#{bundle.CreateProjectsTitle_projectName}"/> 
      </h:panelGrid> 
      <p:commandButton action="#{projectsController.create}" 
          value="#{bundle.CreateProjectsSaveLink}" 
          onclick="window.close()"/> 
     </h:form> 
    </ui:define> 
</ui:composition> 
+0

Quelle est la portée de 'projectsController'? –

+0

c'est @SessionScoped je devrais le changer à @ RequestScoped;) – helloWorld

Répondre

3

Étant donné que projectsController est la portée de la session, elle est instanciée une seule fois et cette instance est conservée tant que la session est active. Lorsque vous entrez des valeurs dans ses champs, elles restent là jusqu'à ce que vous les changiez.

Vos options sont

  • Modifier la portée de @RequestScope, de cette façon la fève sera initialisé sur chaque demande
  • Réinitialiser les valeurs que vous voulez dans une action, peut-être après l'action du bouton est terminée
2

Les valeurs de votre page sont stockées dans vos objets Java liés à la page. Dans ce cas, projectsController.

Les objets Java ont une durée de vie correspondant à la portée que vous avez définie pour eux. Donc, tant que cette portée dure, les valeurs sur la page resteront, à moins que vous ne fassiez explicitement quelque chose avec eux.

Si vous pensez que la page doit être réinitialisée à chaque fois qu'elle est soumise, vous devez la demander.