我有一个简单的创建页面和保存按钮。我第一次运行应用程序时一切都很好但在此之后它保留了以前创建的值。
<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 :(得分:3)
由于projectsController
是会话作用域,因此它会被实例化一次,并且只要会话处于活动状态,该实例就会保留。当您在其字段中输入值时,它们会一直保留,直到您更改它们为止。
您的选择
@RequestScope
,这样就会在每个请求上初始化bean 答案 1 :(得分:2)
页面上的值存储在绑定到页面的Java对象中。在这种情况下,projectsController
。
java对象根据您为它们定义的范围具有生命周期。因此,只要该范围持续,页面上的值将保留,除非您明确地对它们执行某些操作。
如果您希望每次提交页面时都重置页面,则应该将其设置为作用域。