2017-06-30 4 views
0

J'ai un formulaire de connexion et un registre sur une seule et même page et j'essaie de renvoyer le message d'erreur global uniquement sur le formulaire concerné. Comment je fais ça correctement?Comment affecter "addGlobalError()" pour corriger le formulaire si plusieurs formulaires existent

import org.omnifaces.util.Messages; 

// login class submit() 
Messages.addGlobalError('Login failed'); 

// register class submit() 
Messages.addGlobalError('Register failed'); 
<h:form id="login-form">  
    <h:messages globalOnly="true" />  
    // [...]        
    <h:commandButton value="Login" action="#{login.submit()}" />  
</h:form>  
<h:form id="register-form">  
    <h:messages globalOnly="true" />  
    // [...]        
    <h:commandButton value="Sign up" action="#{register.submit()}" />  
</h:form> 

Répondre

1

C'est contradictoire ... vous assignez tout simplement jamais une erreur globale à un composant spécifique (la forme est un composant).

  1. Il suffit de faire une erreur que vous attribuez à la id du formulaire en utilisant

    Messages.addError(id, error); 
    
  2. ajouter un <h:message for="..."> où pour contient le id du formulaire.


Voici comment votre exemple devrait ressembler à:

import org.omnifaces.util.Messages; 

// login class submit() 
Messages.addError('login-form', 'Login failed'); 

// register class submit() 
Messages.addError('register-form', 'Register failed'); 
<h:form id="login-form">  
    <h:messages globalOnly="true" for="login-from" />  
    // [...]        
    <h:commandButton value="Login" action="#{login.submit()}"/>  
</h:form>  
<h:form id="register-form">  
    <h:messages globalOnly="true" for="register-from" />  
    // [...]        
    <h:commandButton value="Sign up" action="#{register.submit()}"/>  
</h:form> 
+0

C'est ce que je pensais! Après google (ce que j'aurais dû faire en premier lieu ...) j'ai trouvé cette belle explication: http://showcase.omnifaces.org/utils/Messages – wittich

+0

@wittich: Merci d'avoir amélioré la réponse !. Mais êtes-vous sûr que 'globalOnly =" true "' devrait être là? Cela semble contradictoire – Kukeltje

+0

De rien! Merci pour le bon indice! A propos du 'globalOnly' je ne suis pas sûr, mais il fonctionne correctement ... Bien qu'il soit probablement raisonnable de l'utiliser seulement dans un' h: message' ou dans un autre message ... mais le retirer de votre réponse , si vous pensez que c'est le meilleur moyen! – wittich