Ich habe ein Formular in dem man eine Kategorie erstellen kann. Dazu gibt man einen Namen in den Input ein.
Der Input hat einen Validator der überprüft ob bereits eine Kategorie mit diesem Namen vorhanden ist.
Der Kategorie /Submit Button soll, solange der Validator invalid ist und kein Kategorienamen vergeben wurde disabled sein.
Obwohl im Validator keine ValidationException geworfen wird, wird der Submit Button nicht enabled. Kann es sein, dass disabled="#{not category.valid}" nicht upgeadeted wird?
Außerdem wird zu beginn, wenn die Seite geladen wird, der Validator nicht aufgerufen. Das heißt bei <h: messages wird die Meldung “Create category: Validation Error: Value is required.” nicht ausgegeben.
Hast Du es mal mit einem Breakpoint ausprobiert? Wird der Validator vernünftig durchlaufen? Was passiert, wenn Du einen Breakpoint in der getValid()-Methode hast?
Ich habe das execute="@this" mit eingebaut, aber der Button wird trotzdem nicht enabled. Wenn ich mit dem Debugger in den Validator rein gehe, wird auch keine Validatorexception geworfen. Es sollte also passen. Eine getValid Methode habe ich nicht. Nur eine public void validate(…) Funktion. Das Interface Validator verlangt keine getValid Methode oder habe ich was übersehen? Ich werde morgen pl4gu33’s Beispiel ausprobieren und schauen ob das bei mir tut.
Dein Beispiel habe ich als eigenständiges Projekt erstellt und es funktioniert. Warum es bei meinem Projekt nicht funktioniert ist mir nicht ganz geheuer.
Ich habe das Projekt als Attachment beigefügt.
Man muss die Datasource entsprechend anpassen, damit es lauffähig ist.
Also ich hab mir jetzt ne H2 DB in den Glassfish reingehangen,… Hab aber noch kein Model-Gen, darum gibts dann ne Exception im Validator. Wenn ich die XHTML starte und dann ein Buchstaben eingebe isser direkt im Validator und schmeißt halt ne Exception. Aber Ansich funktioniert es bei mir. Der Validator wird angesprochen. Hab auch noch paar Sachen rausgeschmissen etc. hier meine Version … einfach als Archiv importieren, Data Source ändern und starten. Schau mal ob er bei dir dann in den Validator geht:
ps. hatte als Implementierung OpenJPA drin musste auch nochmal zurück ändern für dich dann.
[QUOTE=pl4gu33]Also ich hab mir jetzt ne H2 DB in den Glassfish reingehangen,… Hab aber noch kein Model-Gen, darum gibts dann ne Exception im Validator. Wenn ich die XHTML starte und dann ein Buchstaben eingebe isser direkt im Validator und schmeißt halt ne Exception. Aber Ansich funktioniert es bei mir. Der Validator wird angesprochen. Hab auch noch paar Sachen rausgeschmissen etc. hier meine Version … einfach als Archiv importieren, Data Source ändern und starten. Schau mal ob er bei dir dann in den Validator geht:
ps. hatte als Implementierung OpenJPA drin musste auch nochmal zurück ändern für dich dann.[/QUOTE]
In den Validator geht er bei mir auch, aber wenn er keine Exception wirft wird wird eben der Button nicht enabled.
okay dann hatte ich da ein bisschen missverstanden, da ich hier auf der Arbeit immer nur kurz drüber gucken kann.
Hattest du gesehen, dass ich "facesContext.validationFailed benutze und nicht dieses valid auf der Componente, weil das ging bei mir auch nicht richtig.
[QUOTE=pL4Gu333]
Hattest du gesehen, dass ich "facesContext.validationFailed benutze und nicht dieses valid auf der Componente, weil das ging bei mir auch nicht richtig. [/QUOTE]
Nein, sowas habe ich nicht in der Validator-, Beanklasse oder View gefunden.
Ich glaube ich werde es jetzt über eine Hilfsproperty lösen die angibt ob der Button disabled ist oder nicht.
Gibt es eine Möglichkeit vom Bean auf die View auf den Validator von <h:inputText id=“category” zu zugreifen, damit ich auf den status des Validator abfragen kann?
das „facesContext.validationFailed“ ist dafür da, dass du prüfen kannst, ob eine Validierung fehlgeschlagen ist. Schau dir mal meine XHTML an, dort ist es bei dem Button drin. Das kannst du einfach in JSF benutzen!