2013-01-06 10 views
5

Ich frage mich, ob es einen Trick gibt, um alle Felder in einem Formular außer einem zu validieren?JSF und teilweise Validierung

Etwas wie:

<p:remoteCommand process="@form^F100" .... /> 

Offensichtlich ist dies nicht funktioniert ...

Wenn ich 100 Felder in einer Form habe, ist es eine Möglichkeit oder eine Verknüpfung all Ausnahme F100 zum Beispiel zur Validierung ?

Bin verurteilt ich

<p:remoteCommand process="F1 F2 F3 F4 F5 F6 .... F99" .... /> 

zu benutzen?

+0

Haben Sie versucht, sie in zwei separate Formulare zu setzen? –

+0

@Alexandre: Nein, aber ich habe mehrere Befehlsschaltfläche, die einige verschiedene Felder innerhalb des gleichen Formulars validieren, so dass ich nur 1 Formular behalten muss –

+0

Sie können mit Formen spielen und ändern Sie Ihren Prozess = "@ form1 @ form2" oder nur process = "@ form1 " beispielsweise. –

Antwort

13

Sie können hierfür PrimeFaces Selectors (PFS) verwenden. Dies ermöglicht die Verwendung von jQuery CSS selector syntax in process und update Attributen von PrimeFaces Ajax-Komponenten. Sie könnten zum Beispiel eine noprocess Klasse für die Komponente verwenden, die Sie überspringen möchten, und :not(.noprocess) selector verwenden.

Ihre besondere Anforderung kann dann wie folgt gelöst werden:

<h:form> 
    <h:inputText ... /> 
    <h:inputText ... /> 
    <h:inputText ... /> 
    ... 
    <h:inputText ... /> 
    <h:inputText ... /> 
    <h:inputText ... styleClass="noprocess" /> 
    <p:remoteCommand ... process="@(form :not(.noprocess))"/> 
</h:form> 

Dieses Beispiel wird die gesamte Form erwartet von Eingängen class="noprocess" in der Client-Seite verarbeiten.

+0

Das war ... genau das, was ich brauchte! Vielen Dank wie immer :) –

+0

Gern geschehen. – BalusC

+0

Nur um meine Anforderung für Informationen zu spezifizieren: Ich benutze p: captcha-Komponente und reCaptcha unterstützt keine partielle Seitenaktualisierung, also möchte ich es nicht über Ajax aktualisieren, sondern mit der 'Recaptcha.reload()' Methode –