2017-06-19 11 views
-3

Bitte helfen Sie, wie validatorMessage zu verstecken, wenn Benutzer das Feld Löschen:Wie validatorMessage verstecken, wenn Feld leer ist

<div class="item"> 
    <p:outputLabel for="firstName" value="#{msgs['customerForm.firstName']}"/> 
    <p:inputText id="firstName" value="#{customerBean.customer.firstName}" 
    requiredMessage="#{msgs['Error.firstName.mandatory']}" 
    validatorMessage="#{msgs['Error.firstName.wrongFormat']}"required="true"> 
    <f:validateRegex pattern="^([a-zA-Z]+[a-zA-Z\s\-]*){1,255}$" /> 
    </p:inputText> 
    <p:message id="m_firstName" for="firstName" display="text"/> 
</div> 
+4

Was ist die Technologie, die Sie für die Benutzeroberfläche verwenden? Ist es JSP? AngularJS? Ich bin eigentlich nicht ganz sicher, was dieser Code überhaupt mit Java zu tun hat ... –

+1

es ist höchstwahrscheinlich primefaces –

+0

Aber es sollte die Nachricht anzeigen, wenn das Feld leer ist, weil Feld ist erforderlich - das ist genau der Punkt. –

Antwort

1

Sie definiert Ihr Feld zwei Validierungen mit:
* erforderlich Wert Validator
* regelmäßige Validator Ausdruck

Beide Validatoren haben die gleiche Priorität, und beide werden gegen Ihren Feldwert ausgeführt. Und beide Validierer sehen einen leeren Wert als ein Problem, und Ihr Framework, das nicht in der Lage ist festzustellen, welcher dieser beiden äquivalent aussehenden Fehler der "tatsächliche" Fehler ist, zeigt beide an.

zu „reparieren“ es, sollten Sie leere Werte lassen Sie Ihre regex passieren, wie folgt aus:

 <f:validateRegex pattern="^([a-zA-Z]+[a-zA-Z\s\-]*){0,255}$" /> 

Beachten Sie, dass ich Nummer Qualifier wie vor 0-255 Zeichen anstelle von 1-255 Zeichen zu ermöglichen geändert . Das sollte zulassen, dass zwei Ihrer Prüfer verschiedene Fälle von ungültigen Werten abdecken, wie Sie es beabsichtigt haben.

+0

es funktioniert

+0

aber was soll ich im Kalender machen? –

+0

@DmitriyLaletin, es ist sehr unwahrscheinlich, dass es genauso funktioniert wie die Konfiguration, die Sie gepostet haben, weil diese verschiedene Dinge tun. Es kann ** erscheinen **, dass sie ähnlich funktionieren, aber am Ende nicht. –

0

Sie können die Fehlermeldungen aktualisieren, wenn Sie dies in das Eingabeelement eingeben. Es überprüft jedoch die Eingabe bei jedem Keyup-Ereignis.

<f:ajax execute="@this" event="keyup" render="m_firstName" /> 
+0

vielleicht können Sie einen anderen Thread für den Kalender-Thing öffnen @ Dmitriy Laletin –

+0

Vielen Dank! Gib mir bitte eine andere Hilfe - jetzt muss ich ändern Code -so ich muss Fehlermeldungen anzeigen, wenn Benutzer drücken Sie die Schaltfläche Speichern (Ende Teil meiner XHTML) und Dynamic hide err Nachricht, wenn das Eingabefeld ist gelöscht –

+0

warum nicht akzeptieren Sie diese Antwort und eine neue Frage eröffnen, und wir werden uns auch darum kümmern. Wir sollten den Rahmen dieser Frage nicht überschreiten. Sie können die URL zu Ihrer neuen Frage hier einfügen. –

Verwandte Themen