Comment gérer h:inputText de validation?
J'aimerais afficher une erreur à côté des champs qui sont mauvais. J'ai que le code de ma page :
<!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:ui="http://java.sun.com/jsf/facelets"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core">
<ui:composition template="/WEB-INF/templates/basic.xhtml">
<ui:define name="content">
<h:form>
<h:panelGrid columns="3">
<h:outputText value="Firstname"/>
<h:inputText id="firstName" value="#{account.firstName}" required="true">
<f:validator validatorId="stringAlphaValidator"/>
</h:inputText>
<h:message for="firstName" errorStyle="color:red; display:block"/>
<h:outputText value="Lastname"/>
<h:inputText id="lastName" value="#{account.lastName}" required="true">
<f:validator validatorId="stringAlphaValidator"/>
</h:inputText>
<h:message for="lastName" errorStyle="color:red; display:block"/>
<h:outputText value="Login"/>
<h:inputText id="login" value="#{account.login}" required="true">
<f:validator validatorId="stringAlphaValidator"/>
</h:inputText>
<h:message for="login" errorStyle="color:red; display:block"/>
<h:outputText value="Password"/>
<h:inputText id="password" value="#{account.password}" required="true">
</h:inputText>
<h:message for="password" errorStyle="color:red; display:block"/>
<h:outputText value="Address"/>
<h:inputText id="address" value="#{account.address}" required="true">
<f:validator validatorId="stringAlphaNumericValidator"/>
</h:inputText>
<h:message for="address" errorStyle="color:red; display:block"/>
<h:outputText value="Email"/>
<h:inputText id="email" value="#{account.email}" required="true">
<f:validator validatorId="emailAddressValidator"/>
</h:inputText>
<h:message for="email" errorStyle="color:red; display:block"/>
</h:panelGrid>
<h:commandButton value="Register"/>
<h:messages globalOnly="true"/>
</h:form>
</ui:define>
</ui:composition>
</html>
Si un champ est vide et je presse le Register
bouton, j'obtiens que (ici, tous les champs sont vides):
(désolé de l'erreur est en français. Je ne sais pas si ça vient de mon eclipse de langue ou de mon serveur tomcat)
Je n'ai pas écrit cela ! C'est un texte que mon programme écrit sur son propre en quelque sorte... Comment puis-je supprimer ce ?
Aussi, c'est une page du registre, j'aimerais ajouter à ma DB l'utilisateur (si les champs sont à droite), puis de changer de page avec l'action login
. Comment puis-je appeler une méthode pour le faire avant qu'elle ne change de page ?
Si vous avez besoin de voir plus de code, comme le programme de validation des classes, je peux l'ajouter.
Vous devez vous connecter pour publier un commentaire.
Cela devrait fonctionner.
Et les champs que vous validez, vous pouvez ajouter un
validatorMessage="<Message>"
** Mise à JOUR *
Si vous souhaitez utiliser Bean Validation, comme décrit dans mon commentaire,aller de cette façon:
et le xhtml
C'est tout.
validatorMessage
œuvres ? Je ne vois pas le message que j'ai écrit sur elle. Aussi, c'est un travail, mais que dois-je retourner dans les validateurs ? Jusqu'à maintenant, j'ai retourné des choses comme :if (!valid) { FacesMessage message = new FacesMessage( FacesMessage.SEVERITY_ERROR, "", "Email is not valid."); throw new ValidatorException(message); }
@Size(min=3, max=5, message="Min 3 and max 5 characters")
, pourriez-vous me montrer un exemple? Aussi, comment puis-je créer une variablerequiredMessage
?javax.validation.constraints
J'ai réussi de cette façon (personnellement) :