2017-06-30 2 views
0

Ich habe ein Login und ein Registrierungsformular auf ein und derselben Seite und ich versuche, die globale Fehlermeldung nur auf dem betreffenden Formular zurückzugeben. Wie mache ich das richtig?So weisen Sie "addGlobalError()" zu, um das Formular zu korrigieren, wenn mehrere Formulare vorhanden sind

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> 

Antwort

1

Das ist ein widersprüchlicher ist ... man einfach nie einen globalen Fehler auf eine bestimmte Komponente (Form ist eine Komponente) zuzuordnen.

  1. einfach einen Fehler machen, die Sie mit

    Messages.addError(id, error); 
    
  2. fügen Sie ein <h:message for="..."> zum id des Formulars zuordnen, wo die für die id des Formulars enthält.


Hier ist, wie Ihr Beispiel sollte wie folgt aussehen:

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

Das ist, was ich dachte! Nach google (was ich an erster Stelle hätte tun sollen ...) fand ich diese nette Erklärung: http://showcase.omnifaces.org/utils/Messages – wittich

+0

@wittich: Danke für die Verbesserung der Antwort !. Aber bist du sicher, dass 'globalOnly =" true "' da sein sollte? Klingt widersprüchlich – Kukeltje

+0

Gern geschehen! Danke für den richtigen Hinweis! Über das 'globalOnly' bin ich mir nicht sicher, aber es funktioniert damit richtig ... Obwohl es wohl sinnvoll ist es nur in einer' h: message' oder in einer zusätzlichen ... zu verwenden ... aber entferne es aus deiner Antwort , wenn du denkst, das ist der bessere Weg! – wittich

Verwandte Themen