tutorials.de Buch-Aktion 05/2012
ERLEDIGT
JA
ANTWORTEN
1
ZUGRIFFE
1735
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Ono Sendai Ono Sendai ist offline Rookie
    Registriert seit
    Jun 2007
    Beiträge
    7
    Hallo,
    beschäftige mich gerade mit der Validierung durch eine eigene Validator-Methode in der Backing-Bean. Ich habe 3 <h:inputSecret> Komponenten, die letzte ist an die Validator-Methode gebunden.

    Ich bin soweit, dass die Validator Methode aufgrufen wird, allerdings ist mir noch nicht klar, wie ich auf die Werte der anderen Komponenten zugreifen kann.

    Beispiel:
    Code :
    1
    2
    3
    
    <h:inputSecret id="altesPW" value="#{changePW.passwortAlt}" required="true"/>       
    <h:inputSecret id="neuesPW" value="#{changePW.passwortNeu}"  required="true"/>  
    <h:inputSecret id="neuesPW2" value="#{changePW.passwortNeu2}" validator="#{changePW.pwValidate}" required="true"/>

    Methode in der Backing-Bean:
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    
        public void pwValidate(FacesContext fc, 
                UIComponent component, Object value) throws ValidatorException {
            
            
            passwortNeu = passwortNeu.trim();
            
            if (StringTools.empty(passwortAlt)) {
                fc.addMessage(null, new FacesMessage("Bitte geben Sie das alte Passwort ein.") );
            }
     
            if (StringTools.empty(passwortNeu)) {
                fc.addMessage(null, new FacesMessage("Bitte geben Sie das neue Passwort ein.") );
            }
     
            if (!passwortNeu2.equals(passwortNeu)) {
                fc.addMessage(null, new FacesMessage("Die neuen Passwörter stimmen nicht überein.") );
            }
     
            if ((passwortNeu.length() > 10)||(passwortNeu2.length() > 10)) {
                fc.addMessage(null, new FacesMessage("Das Passwort darf nicht länger als 10 Zeichen sein.") );
            }
            throw new ValidatorException(new FacesMessage("Fehler!"));
        }

    Es kracht beim Zugriff auf passwortNeu, da die Eigenschaft der Bean zum Zeitpunkt der Validierung noch nicht gesetzt wurde.
    Der Wert von neuesPW2 ist in dem übergebenen value Object, aber wie komme ich nun an die Werte der Komponenten "altesPW" und "neuesPW" ?
     

  2. #2
    Ono Sendai Ono Sendai ist offline Rookie
    Registriert seit
    Jun 2007
    Beiträge
    7
    Des Rätsels Lösung:

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    
            Object pwAlt = ((UIOutput) component.findComponent("altesPW")).getValue();
            Object pwNeu = ((UIOutput) component.findComponent("neuesPW")).getValue();
     
            if( pwAlt instanceof String && pwNeu instanceof String && value instanceof String) {
            String alt  = (String)pwAlt;
            String neu  = (String)pwNeu;
            String neu2 = (String) value;
     
    ...
    }

    Man muss über die übergebene Komponente an den Komponentenbaum und kann dann die Werte der anderen Komponenten auslesen.
     

Ähnliche Themen

  1. GCC als Cross-Compiler
    Von Aiju im Forum Linux & Unix
    Antworten: 15
    Letzter Beitrag: 23.01.06, 09:20
  2. HDR Cross
    Von Cosix im Forum 3D Studio Max
    Antworten: 2
    Letzter Beitrag: 22.10.05, 17:03
  3. Probleme mit Cross-Compiler
    Von plonk im Forum Java
    Antworten: 7
    Letzter Beitrag: 26.08.05, 20:38
  4. Cross Domain Scripting
    Von Agent_Smith im Forum Javascript & Ajax
    Antworten: 1
    Letzter Beitrag: 22.07.05, 01:19
  5. Cross-Section - hä****?
    Von m00w im Forum 3D Studio Max
    Antworten: 3
    Letzter Beitrag: 10.05.01, 18:35