Eingabe nur dann bestätigen, wenn eine bestimmte Befehlsschaltfläche gedrückt wird

8

Ich habe einen spezifischen Anwendungsfall für die JSF-Validierung. Zum Beispiel habe ich ein inputText -Feld:

%Vor%

Wert der Eingabe ist Zahl (in einigen Fällen kann es auch eine Zeichenkette sein, weil dies Teil der zusammengesetzten Komponente ist, aber das Problem ist besser beschrieben, wenn wir annehmen, dass dies eine Zahl ist). Diese Eingabe ist Teil des Formulars, am Ende des Formulars habe ich die Schaltfläche Senden:

%Vor%

Was sind meine Anforderungen:

  1. Wenn der Submit-Knopf gedrückt wird, sollte die gesamte Validierung durchgeführt werden und das ist in Ordnung, das funktioniert gut.
  2. Wenn das Blur-Ereignis im Eingabefeld ausgelöst wird, wenn das Feld nicht leer ist, sollte eine Zahlenvalidierung durchgeführt werden, und das ist auch in Ordnung. Am Ende aktualisiere ich das Feld mit der ID name mit einem Wert.
  3. Jetzt habe ich ein Problem. Meine dritte Anfrage lautet: Wenn die Eingabe leer ist, sollte die Validierung bei der Eingabe nicht verarbeitet werden. Dies ist ein Spezialfall, in dem ich das Feld mit der ID name löschen werde. Dies ist auch der Fall, wenn ich Text lösche, der bereits in der Eingabe eingegeben wurde, den Fokus von der Komponente entferne (zum Beispiel TAB drücken) und in diesem Fall sollte auch eine AJAX-Anfrage verarbeitet werden und die Namenseingabe ebenfalls gelöscht werden.

Wie kann ich die Validierung dieses Eingabefeldes deaktivieren, wenn es leer ist und nur für dieses Ajax-Ereignis?

    
partlov 06.02.2013, 13:13
quelle

2 Antworten

10

Lassen Sie das required -Attribut der Eingabe überprüfen, ob die Schaltfläche zum Speichern gedrückt ist oder nicht (was durch das Vorhandensein seiner Client-ID in der Anforderungsparameterzuordnung identifiziert werden kann).

%Vor%

(Beachte: nicht bind es an eine Bean-Eigenschaft! Der Code ist wie er ist)

Auf diese Weise würde% code% nur ausgewertet, wenn die Schaltfläche zum Speichern tatsächlich gedrückt wird.

Oder wenn Sie Probleme mit true haben und / oder kein Problem bei der Codierung der Client-ID der Schaltfläche haben:

%Vor%     
BalusC 06.02.2013, 13:48
quelle
2

Entfernen Sie einfach das erforderliche Attribut, wenn Sie die Eingabe akzeptieren, wenn die Eingabe leer ist. Schreiben Sie dann einen benutzerdefinierten Validator, der nur leere Eingaben oder numerische Eingaben akzeptiert.

%Vor%

Öffentliche Klasse customerNumericInputValidator implementiert Validator {

%Vor%

}

    
cubbuk 06.02.2013 13:21
quelle