Primefaces - 文本框项目在表单提交后不会消失

时间:2011-12-20 05:20:56

标签: java html5 jsf-2 primefaces

我正在使用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是表单提交后的屏幕截图enter image description here

3 个答案:

答案 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'。所以在你的情况下它没用......