2013-02-28 6 views
5

Ich bin neu bei Struts2 und OGNL und mache eine einfache Web-Anwendung mit einer Registrierungsseite. Es gibt zwei Felder, password und repassword (um das Passwort erneut einzugeben) und mit dem Validierungsframework möchte ich bestätigen, dass die beiden Passwörter übereinstimmen (ich weiß, dass ich es einfach mit JavaScript machen kann). Hier ist, was ich bisher habe. Alle Feld-Validatoren funktionieren gut. Dies ist mein erster Nicht-Feld-Validierer und ich kann es einfach nicht zum Laufen bringen.Struts 2 OGNL - Vergleich zweier String-Werte in validation.xml

<validator type="expression"> 
    <param name="expression">${password}!=${repassword}</param> 
    <message>Passwords must match.</message> 
</validator> 

Ich habe versucht, beide mit

${password}!=${repassword} 

und ohne

password!=repassword 

die OGNL Tags.

Antwort

3

Der Validator expression ist ein Validierer ohne Feldebene. Verwenden Sie den Validator fieldexpression, bei dem es sich um einen Validierer auf Feldebene handelt, und validiert den OGNL-Ausdruck. Und es muss gleich sein (==) überprüfen.

<field name="password"> 
    <field-validator type="fieldexpression"> 
    <param name="expression"><![CDATA[password == repassword]]></param> 
    <message>Passwords must match.</message> 
    </field-validator> 
</field> 

Der expression Validator fügt Aktionsfehler hinzu. Der Validierer fieldexpression fügt Feldfehler hinzu.

+0

Das hat funktioniert! Vielen Dank. Ich würde immer noch gerne verstehen, wie man es als Ausdrucksprüfer einsetzen kann. Die beiden obigen Links scheinen die gleiche Funktionalität nur mit anderen Worten zu beschreiben. – BLam85

+0

@ BLam85: Meine Antwort ein wenig aktualisiert. Sie können den Ausdruck validator verwenden, aber um Fehler in JSP anzuzeigen, müssen Sie das '-Tag verwenden. –

2

versuchen

%{password == repassword} 

Der Validator prüft OGNL Ausdruck boolean, dass beide gleich sind.

+1

Das hat nicht funktioniert ... wie erwartet. Der Validierer ist fehlgeschlagen, ob die Kennwörter übereinstimmen. (dh Die Aktion gab die Eingabe zurück) Die Nachricht wurde jedoch nie angezeigt und ich sehe die folgende Warnung in der Konsole: 1. März 2013 12:59:28 PM com.opensymphony.xwork2.util.logging.commons.CommonsLogger warn WARNUNG: Ergebnis von null beim Versuch, Boolean zu erhalten. – BLam85

+0

Dieser OGNL-Ausdruck wird als wahr ausgewertet, wenn die Werte übereinstimmen. –