Изменение стиля CSS с проверкой JSF - PullRequest
4 голосов
/ 20 июля 2009

Я работаю над требованием выделить поля, которые не прошли красным цветом после проверки на стороне сервера JSF. Никакой JavaScript не может быть использован для проверки. Есть ли способ связать проверку на стороне сервера с изменениями стиля CSS?

Ответы [ 2 ]

6 голосов
/ 20 июля 2009

Вы можете сделать это с помощью управляемого компонента:

public class ValidBean {

  private UIComponent myComponent;

  public UIComponent getMyComponent() {
    return myComponent;
  }

  public void setMyComponent(UIComponent myComponent) {
    this.myComponent = myComponent;
  }

  public String getErrorStyle() {
    FacesContext context = FacesContext
        .getCurrentInstance();
    String clientId = myComponent.getClientId(context);
    Iterator<FacesMessage> messages = context
        .getMessages(clientId);
    while (messages.hasNext()) {
      if (messages.next().getSeverity().compareTo(
          FacesMessage.SEVERITY_ERROR) >= 0) {
        return "background-color: red";
      }
    }
    return null;
  }
}

Переменная области запроса:

  <managed-bean>
    <managed-bean-name>validBean</managed-bean-name>
    <managed-bean-class>stylevalid.ValidBean</managed-bean-class>
    <managed-bean-scope>request</managed-bean-scope>
  </managed-bean>

Пример просмотра:

  <f:view>
    <h:form>
      <h:inputText binding="#{validBean.myComponent}" styleClass="foo"
        style="#{validBean.errorStyle}">
        <f:validateLength minimum="6" />
      </h:inputText>
      <h:commandButton />
      <h:messages />
    </h:form>
  </f:view>

Компонент связан с компонентом поддержки. Если сообщения об ошибках были поставлены в очередь для компонента, он переопределяет свои настройки класса CSS своим атрибутом style.

1 голос
/ 20 июля 2009

Каркас шва делает это очень легко. Проверьте это: http://www.redhat.com/docs/manuals/jboss/jboss-eap-4.2/doc/seam/Seam_Reference_Guide/JSF_form_validation_in_Seam.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...