我正在使用JSF Primefaces 3.0.M3。当我提交(保存)表格时,文本框上的一些项目也不会消失。给定的是代码-userName和密码仍然存在于表单提交之后。你能提出任何问题吗?
<h:form id="formId" prependId="false">
<p:wizard flowListener="#{employeeRepositoryImpl.handleFlow}"
showNavBar="true" widgetVar="scheduler" showStepStatus="false">
<p:tab id="personal">
<p:panel header="Login Credentials">
<!-- <p:messages showDetail="true" autoUpdate="true"/> -->
<h:panelGrid columns="3" autoUpdate="false">
<h:outputText value="First Name*" />
<p:inputText
value="#{employeeRepositoryImpl.employee.firstName}"
required="true" label="First Name" id="firstName"
validatorMessage="Invalid First Name"
onblur="changeCase(this)">
<f:validateRegex
pattern="^[a-zA-Z]+(([\'\,\.\- ][a-zA-Z ])?[a-zA-Z]*)*$" />
<p:ajax event="blur" update="firstName" />
</p:inputText>
<p:message id="msg4" for="firstName" />
<h:outputText value="Middle Name" />
<p:inputText
value="#{employeeRepositoryImpl.employee.middleName}"
label="Middle Name" id="middleName" onblur="changeCase(this)" />
<p:message id="msg5" for="middleName" />
<h:outputText value="Last Name*" />
<p:inputText
value="#{employeeRepositoryImpl.employee.lastName}"
required="true" label="Last Name" id="lastName"
validatorMessage="Invalid Last Name"onblur="changeCase(this)">
<f:validateRegex pattern="^[A-Z][a-zA-Z]*$" />
<p:ajax event="blur" update="lastName" />
</p:inputText>
<p:message id="msg6" for="lastName" />
<h:outputText value="Employee Code*" />
<p:inputText
value="#{employeeRepositoryImpl.employee.employeeCode}"
required="true" label="Employee Code" id="employeeCode">
<p:ajax event="blur" update="employeeCode" />
</p:inputText>
<p:message id="msg7" for="employeeCode" />
<h:outputText value="User Name*" />
<p:inputText
value="#{employeeRepositoryImpl.securityPrincipals.userName}"
required="true" label="User Name" id="userName"
validatorMessage="Invalid Email ID">
<f:validateRegex
pattern="^(([A-Za-z0-9]+_+)|([A-Za-z0-9]+\-+)|([A-Za-z0-9]+\.+)|([A-Za-z0-9]+\++))*[A-Za-z0-9]+@((\w+\-+)|(\w+\.))*\w{1,63}\.[a-zA-Z]{2,6}$" />
<p:ajax event="blur" update="userName" />
</p:inputText>
<p:message id="userNameId" for="userName"/>
<h:outputText value="Password*" />
<p:password
value="#{employeeRepositoryImpl.securityPrincipals.password}"
match="confirmPassword" required="true" label="Password"
id="password" for="password">
<p:ajax listener="#{employeeRepositoryImpl.handlePW}"
update="password" />
</p:password>
<p:message id="msg8" for="password" />
<h:outputText value="Confirm Password*" for="confirmPassword" />
<p:password
value="#{employeeRepositoryImpl.securityPrincipals.confirmPassword}"
required="true" label="Confirm Password" id="confirmPassword"
onkeyup="checkPass(); return false;">
<p:ajax listener="#{employeeRepositoryImpl.handlePW}"
update="confirmPassword" />
</p:password>
<p:message id="msg" for="confirmPassword" display="text" />
</h:panelGrid>
</p:panel>
</p:tab>
</p:wizard
<h:commandButton value="Submit"
actionListener="#{employeeRepositoryImpl.save}" immediate="true">
</h:commandButton>
</h:form>
即使在表单提交后,输入的userName,password,confirmPassword也没有消失.Attached是表单提交后的屏幕截图。
答案 0 :(得分:1)
那么,您是否尝试过提交后重置所有字段?将它们插入DB后,尝试将它们重新初始化为0 / null。
此外,如果您在使用浏览器自动填充表单时遇到问题,请参阅inputText
标记的Primefaces autocomplete 属性。请阅读Primefaces User Guide。
答案 1 :(得分:0)
您只需将绑定bean的范围设置为“request”,无需重新初始化bean。它将自动通过JSF生命周期重新初始化。
在你的情况下,我认为它的employeeRepositoryImpl,使它成为请求范围bean。
答案 2 :(得分:0)
在Primefaces 3.4.x中,p:message组件没有标记'for'。所以在你的情况下它没用......