# Struts 2 Validation



## Gast (24. Nov 2008)

Hi an alle, 

nur eine kurze Frage:

Ist es möglich mittels Struts 2 XML Validation 2 Felder zu vergleichen (würde das gerne bei einer doppelten Passworteingabe während der Registrierung machen)?


Grüße!


----------



## Marsman (24. Nov 2008)

Zumindest unter Struts 1 konnte man eigene Validatoren programmieren und diese über die validator-rules.xml einbinden. Ansonsten empfiehlt es sich, unter Struts 2 in der Action-Klasse eine Methode validate() zu implementieren, welche die beiden Felder vergleicht.

Titus


----------



## Gast (24. Nov 2008)

hmm ja den umweg übver eine klasse (auch wenn es kein großer ist) wollte ich eigentlich nicht gehen. es wäre schön wenn jemand weiss wie es gehen könnte.. wenn nicht bleibt mir wohl keine wahl. aber danke trotzdem!


----------



## Marsman (24. Nov 2008)

Meines Wissens nach sollten über die validator.xml nur einfache Validierung bzgl. des Datenformats oder der Gültigkeit eines Werts an sich geprüft werden (z.B. Postleitzahl numerisch und im Bereich von 1 bis 99999). In der Action bzw. über den Validator-Interceptor sollen Daten gegeneinander bzw. bzgl. der Geschäftslogik geprüft werden. Ein Vergleich der beiden Felder für Passwort gehört also in die validate()-Methode der Action-Klasse.  :wink: 

Titus


----------



## Gast (24. Nov 2008)

überredet  danke dir


----------



## Gost123-456 (28. Sep 2010)

Ich weiss 2 Jahre blabla.


Struts kann auch in der <Actionklasse>-(<Methode>-)validation.xml Werte vergleichen. Bei Passwörtern z.B. so:

  <field name="password">

      <field-validator type="requiredstring">

      <param name="trim">true</param>
         <message key="password.required"></message>

      </field-validator>

      <field-validator type="stringlength">

         <param name="maxLength">20</param>

         <param name="minLength">6</param>
         <message key="password.length"></message>

      </field-validator>

  </field>


  <field name="password2">

  	<field-validator type="requiredstring">

        <param name="trim">true</param>
  		<message key="password.required"></message>

  	</field-validator>

  </field>

<validator type="expression">

      <param name="expression">password.equals(password2)</param>

<!-- TODO: i18n -->
      <message>Passwörter stimmen nicht überein.</message>

  </validator>

Wobei hier z.B. password.required als Platzhalter für Sprachunabhängige Hinweistexte dient.
Mehr unter Validation


----------

