2015-04-17 2 views
1

У меня есть простая страница создания и кнопка сохранения. В первый раз, когда я запускаю приложение, все в порядке, но после этого он сохраняет значения из предыдущего создания.Почему страница JSF хранит старые данные?

<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

Какова область действия 'projectsController'? –

+0

это @SessionScoped, я должен изменить его на @ RequestScoped;) – helloWorld

ответ

3

С projectsController сеанс ограничен, он создается один раз, и этот экземпляр хранится так долго, пока сеанс жив. Когда вы вводите значения в своих полях, они остаются там, пока вы их не измените.

Ваши варианты

  • Изменить область для @RequestScope, таким образом фасоль будет инициализирован при каждом запросе
  • Сброс значения, которые вы хотите в какое-то действие, возможно, после того, как действие этой кнопки завершается
2

Значения на вашей странице хранятся в объектах Java, привязанных к странице. В этом случае projectsController.

Объекты java имеют срок службы в соответствии с областью действия, которую вы определили для них. Таким образом, пока эта область действия сохраняется, значения на странице останутся, если вы явно не сделаете что-то с ними.

Если вы ожидаете, что страница будет сброшена каждый раз, когда она будет отправлена, вы должны сделать ее запрошенной.

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