Announcement

Collapse
No announcement yet.

Fehlerhinweise

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Fehlerhinweise

    Hallo,

    falls Fehlermeldungen zu einem Eingabefeld vorhanden sind, kann man sie in JSF mit h:message ausgeben. CSS-Angaben lassen sich auch dazu machen. Beispielsweise so:

    Code:
    <h:inputText id="username" value="..." /> 
    <h:message for="username" style"..." />
    Soweit so gut. Nun möchte ich aber, falls Fehler vorliegen, zusätzlich (oder alternativ) das zugehörige Eingabefeld hervorheben (rot einrahmen z.B.), ihm also eine andere Style-Class setzen.

    Hat jemand eine Idee, wie ich das machen könnte?

  • #2
    Man kann in der Backing-Bean auf den Komponentenbaum zugreifen und den Status der komponenten ändern.
    Beispiel in einemr Validierungsmethode:
    /**
    * Die Signatur der Methode ist analog der in einem Validator-Interface
    */
    private static final String BG1 = "background:#ffc0ff";
    private static final String BG2 = "background:#c0ffff";
    public void validatorMethod(FacesContext fc, UIComponent uic, Object value) {
    log.debug("value=" + value + ", attribute(notifyStyle)="
    + uic.getAttributes().get("notifyStyle"));
    UIViewRoot vr = fc.getViewRoot();
    UIComponent comp = vr.findComponent("form:email");
    log.debug("Component email=" + comp);
    if (comp == null) return; //No Component found

    HtmlInputText uii = (HtmlInputText)comp;
    String email = uii.getValue().toString();
    String style = uii.getStyle();
    log.debug("email input value=" + email + ", style=" + style);
    uii.setValid(false);
    if (BG1.equals(style)) uii.setStyle(BG2);
    else uii.setStyle(BG1);
    fc.addMessage(null, new FacesMessage(" so nicht!"));
    }

    aragon

    Comment

    Working...
    X