JSF réinitialisation après la soumission du formulaire
j'ai un petit problème avec mon formulaire jsf. j'ai fait un exemple d'enregistrement
formulaire avec un bouton et un bouton de réinitialisation:
<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:ui="http://java.sun.com/jsf/facelets">
<h:head>
<title>Register</title>
</h:head>
<h:body>
<ui:composition template="/templates/master.xhtml" >
<ui:define name="content">
<center>
<h:outputText value="New User Registration" />
</center>
<h:form>
<h:panelGrid columns="3">
<h:outputText value="Username:" />
<h:inputText id="username" value="#{registerService.userName}" required="true" requiredMessage="Please Enter Username!" />
<h:message for="username" style="color:red" />
<h:outputText value="Password:" />
<h:inputSecret id="password" value="#{registerService.password}" required="true" requiredMessage="Please Enter Password!" />
<h:message for="password" style="color:red" />
<h:outputText value="Confirm Password:" />
<h:inputSecret id="confirmPassword" value="#{registerService.confirmPassword}" required="true" requiredMessage="Please Confirm Password!" />
<h:message for="confirmPassword" style="color:red" />
<h:outputText value="Lastname:" />
<h:inputText id="lastname" value="#{registerService.lastName}" required="true" requiredMessage="Please Enter Lastname!" />
<h:message for="lastname" style="color:red" />
<h:outputText value="Firstname:" />
<h:inputText id="firstname" value="#{registerService.firstName}" required="true" requiredMessage="Please Enter Firstname!" />
<h:message for="firstname" style="color:red" />
<h:outputText value="Date of Birth" />
<h:panelGrid columns="3">
<h:selectOneMenu value="#{registerService.dayOfBirth}">
<f:selectItems value="#{registerService.days}" />
</h:selectOneMenu>
<h:selectOneMenu value="#{registerService.monthOfBirth}">
<f:selectItems value="#{registerService.months}" />
</h:selectOneMenu>
<h:selectOneMenu value="#{registerService.yearOfBirth}">
<f:selectItems value="#{registerService.years}" />
</h:selectOneMenu>
</h:panelGrid>
<h:outputText value="" />
<h:outputText value="E-Mail:" />
<h:inputText id="email" value="#{registerService.eMail}" required="true" requiredMessage="Please Enter E-Mail!" />
<h:message for="email" style="color:red" />
<h:outputText value="Confirm E-Mail:" />
<h:inputText id="confirmEmail" value="#{registerService.confirmEMail}" required="true" requiredMessage="Please Confirm E-Mail!" />
<h:message for="confirmEmail" style="color:red" />
<h:outputText value="Country:" />
<h:inputText id="country" value="#{registerService.country}" required="true" requiredMessage="Please Enter Country!" />
<h:message for="country" style="color:red" />
<h:outputText value="Region:" />
<h:inputText id="region" value="#{registerService.region}" required="true" requiredMessage="Please Enter Region!" />
<h:message for="region" style="color:red" />
<h:outputText value="Town:" />
<h:inputText id="town" value="#{registerService.town}" required="true" requiredMessage="Please Enter Town!" />
<h:message for="town" style="color:red" />
<h:outputText value="ZIP-Code:" />
<h:inputText id="zipCode" value="#{registerService.zipCode}" required="true" requiredMessage="Please Enter ZIP-Code!" />
<h:message for="zipCode" style="color:red" />
</h:panelGrid>
<h:commandButton type="submit" value="Submit" action="#{registerService.addUser}" >
<f:ajax execute="@form" render="@form" />
</h:commandButton>
<h:commandButton type="reset" value="Reset" />
</h:form>
</ui:define>
</ui:composition>
</h:body>
Lorsque je fais quelque chose et appuyez sur le bouton de réinitialisation tout est remis à zéro (à vide)
de nouveau. cependant, quand il me suffit de taper le nom d'utilisateur par exemple et cliquez sur soumettre mon
les messages d'erreur apparaissent (messages) comme il se doit et si maintenant je
appuyez sur le bouton reset, rien n'est remis à zéro. tout reste le même.
je veux que mon bouton de réinitialisation de travailler dans chaque état. comment puis-je le faire?
Vous devez vous connecter pour publier un commentaire.
Le code HTML
<input type="reset">
élément généré par<h:commandButton type="reset">
ne pas clair les valeurs d'entrée de la forme. Au lieu de cela, il réinitialise les valeurs d'entrée de la forme à leurs valeurs initiales comme ils sont dans le initialement obtenu le code source HTML. Lorsque vous faites unrender="@form"
, par lequel vous avez essentiellement ajax-mettre à jour le code source HTML de la totalité du formulaire, tous les champs ne contiennent maintenant les valeurs soumises dans le code source HTML. Comme une preuve que le bouton de réinitialisation "fonctionne très bien", essayez de modifier ces valeurs soumises une fois de plus avant d'appuyer sur le bouton de réinitialisation.Vous avez 2 options:
Ne pas utiliser
render="@form"
. Que le rendu explicitement ces messages. E. g.C'est seulement un enfer beaucoup de travail pour spécifier tous les si vous avez beaucoup d'entre eux. Si vous êtes à l'aide de PrimeFaces, PrimeFaces Sélecteurs peut venir en secours.
Actualiser la page par un bouton OBTENIR.
execute="@form"
ou pas? Veuillez préciser "ne marche pas", au point de vue du développeur à la place de l'utilisateur final du point de vue.