3

我有一个用于注册表单的代码。有一些字段和一个类型的提交按钮<p:commandButton>.现在,当我提交按钮时,它会在表单下显示一个数据表,该数据表呈现输入字段的值。我想在表单提交后清除输入文本字段。但价值观依然存在。如何清除表单文本字段的值?

<p:panel header="Registration Form" closable="true" closeSpeed="100" toggleable="true" toggleSpeed="100" toggleOrientation="vertical">
            <h:panelGrid columns="2" cellpadding="5">
                <p:outputLabel value="*First Name"/>
                <p:inputText id="firstname" value="#{registrationDetails.firstName}" required="true" label="First Name" requiredMessage="First Name required!"/>

                <p:outputLabel value="*Last Name"/>
                <p:inputText id="lastname" value="#{registrationDetails.lastName}" required="true" label="Last Name" requiredMessage="Last Name required!"/>

                <p:outputLabel value="Location"/>
                <p:selectOneMenu id="location" value="#{registrationDetails.location}">
                    <f:selectItem itemLabel="Select Location" itemValue=""/>
                    <f:selectItems value="#{registrationDetails.locations}"/>
                </p:selectOneMenu>

                <p:outputLabel id="email" value="*Email"/>
                <p:inputText value="#{registrationDetails.email}" required="true" label="Email" requiredMessage="Email address required!"/>

                <p:outputLabel value="*Contact Number"/>
                <p:inputText id="contactNumber" value="#{registrationDetails.contactNumber}" autocomplete="false" maxlength="10" required="true" label="Contact Number" requiredMessage="Contact Number required!"/>

                <p:outputLabel value="Address"/>
                <p:inputTextarea value="#{registrationDetails.address}"/>
            </h:panelGrid>
<p:commandButton  value="Submit" actionListener="#{registrationDetails.formSubmit}" id="buttonSubmit" 
                        update="form:msg form:regDetailPanel form:regData" ajax="true">
                <f:attribute name="fname" value="#{registrationDetails.firstName}"/>
                <f:attribute name="lname" value="#{registrationDetails.lastName}"/>
                <f:attribute name="loc" value="#{registrationDetails.location}"/>
                <f:attribute name="email" value="#{registrationDetails.email}"/>
                <f:attribute name="contact" value="#{registrationDetails.contactNumber}"/>
                <f:attribute name="address" value="#{registrationDetails.address}"/>
                <p:ajax event="click" immediate="true" update="form:regDetailPanel form:regData"/>
            </p:commandButton>
4

2 回答 2

8

您必须清除支持 bean 中的值,以便像“#{registrationDetails.firstName}”这样的值表达式返回 null 或空字符串。即在Java代码中,将注册成功后必须清除的所有值设置为null。

这必须在您的 actionListener "#{registrationDetails.formSubmit}" 中的某个地方完成。

当您使用 AJAX 时,您必须确保 JSF 页面中带有文本字段的部分在 ajax 调用成功后得到更新。

于 2013-07-05T09:25:56.183 回答
-1

您可以这样使用 p:commandButton:

<p:commandButton action="#{myBean.method()}" value="Send" update="myForm" />

当我使用p:commandButton的属性update="myForm"时。提交表单后,表单中的字段值将清空。

于 2016-12-29T17:45:45.243 回答