Hallo,
in einer Tabelle (z.B. ui:repeat) möchte ich drei Felder nebeneinander stellen:
Der Anwender setzt nun z.B. an der Checkbox den Haken, es erfolg ein submit(), die Seite wird neu gerendered und damit inputText dargestellt. Der User ändert etwas und soll es dann speichern können.
Ich möchte nun an inputText einen Validator anbringen, welcher aber - wenn die Validierung fehlschlägt - auch die Checkbox wieder aktiviert. Kann ich das nämlich nicht und schlägt die Validierung fehl, dann hat die Checkbox keinen Haken mehr (weil direkt auf die Render-Phase gesprungen wird, ohne in der Bean den Wert entsprechend zu setzen). Ich müsste also im Validator direkt auf diesen einzelnen (von vielen anderen) User zugreifen und sein "editable" Flag wieder setzen können.
Ein Versuch war, den Validator in der Bean selbst zu verwenden, was aber natürlich keinen Sinn macht - ein Validator aktualisiert die Werte in der Bean ja nicht. Wohl kann man mit dem component Feld des Validators (
) auf die anderen Komponenten des Requests zugreifen, aber wie soll ich da die "richtige" Checkbox herausfinden?
Wie macht man das? Geht das überhaupt?
Gruß,
Raphalon
in einer Tabelle (z.B. ui:repeat) möchte ich drei Felder nebeneinander stellen:
- eine selectBooleanCheckbox, welche anzeigt, ob die folgenden beiden Felder editierbar sein sollen
- eine inputText mit einem String einer Bean; wird angezeigt, wenn die checkbox den Haken hat (wird über das Attribut "rendered" bestimmt) oder outputText, wenn checkbox false (dann nicht editierbar)
- nochmals wie 2.
Der Anwender setzt nun z.B. an der Checkbox den Haken, es erfolg ein submit(), die Seite wird neu gerendered und damit inputText dargestellt. Der User ändert etwas und soll es dann speichern können.
Ich möchte nun an inputText einen Validator anbringen, welcher aber - wenn die Validierung fehlschlägt - auch die Checkbox wieder aktiviert. Kann ich das nämlich nicht und schlägt die Validierung fehl, dann hat die Checkbox keinen Haken mehr (weil direkt auf die Render-Phase gesprungen wird, ohne in der Bean den Wert entsprechend zu setzen). Ich müsste also im Validator direkt auf diesen einzelnen (von vielen anderen) User zugreifen und sein "editable" Flag wieder setzen können.
Ein Versuch war, den Validator in der Bean selbst zu verwenden, was aber natürlich keinen Sinn macht - ein Validator aktualisiert die Werte in der Bean ja nicht. Wohl kann man mit dem component Feld des Validators (
Code:
javax.faces.validator.Validator.validate(FacesContext context, UIComponent component, java.lang.Object value)
Wie macht man das? Geht das überhaupt?
Gruß,
Raphalon