Стилизация входного компонента после сбоя проверки

Как я могу стилизовать компонент после неудачной проверки?

У меня есть следующее текстовое поле:


Я пытаюсь изменить цвет после:


Щелкнул.

Я нашел этосайт и попытался реализовать путь, который был показан там.

Это мой класс:

public class RequiredFieldValidationListener implements SystemEventListener {

    public boolean isListenerForSource(Object source) {
        return true;
    }

    public void processEvent(SystemEvent event) throws AbortProcessingException {
        if (event.getSource() instanceof UIInput) {
            UIInput source = (UIInput) event.getSource();

            if (!source.isValid()) {
                String originalStyleClass = (String) source.getAttributes().get("styleClass");
                source.getAttributes().put("data-originaStyleClass", originalStyleClass);
                source.getAttributes().put("styleClass", originalStyleClass + " ui-input-invalid");
            } else {
                String originalStyleClass = (String) source.getAttributes().get("data-originaStyleClass");
                source.getAttributes().put("styleClass", originalStyleClass);
            }
        }
    }
}

Я регистрирую это вfaces-config.xml как:


    ---

    
        com.edfx.adb.web.event.RequiredFieldValidationListener
        javax.faces.event.PostValidateEvent
        javax.faces.component.html.HtmlInputText                       
    


Также я попытался использовать

@ListenersFor({ @ListenerFor(sourceClass = HtmlInputText.class, systemEventClass = PostValidateEvent.class) })
public class RequiredFieldValidationListener implements SystemEventListener {

}

Я ожидал, что когда поле ввода будет недопустимым, в моем случае пустым, класс css ui-input-invalid будет добавлен к атрибуту class компонента. Но это не работает. Я на самом деле методprocessEvent не выполняется вообще.

Что я делаю не так и как мне этого добиться?

Ответы на вопрос(2)

Ваш ответ на вопрос