РЕДАКТИРОВАТЬ: У меня есть этот фрагмент кода:
<h:inputText id="email_id" value="#{CreateUserManager.email}"
styleClass="#{CreateUserManager.emailPrimariaValid ? '' : 'inputErrorClass'}">
<f:validator validatorId="EmailValidator" />
<a4j:support event="onblur" reRender="email_id, messages" oncomplete="setAnchor();"
status="status4divCoverAll" ajaxSingle="true" />
</h:inputText>
Это управляемый сессионный компонент:
public class CreateUserManager {
...
protected boolean emailPrimariaValid;
public CreateUserManager() {
...
this.emailPrimariaValid = true;
}
public boolean isEmailPrimariaValid() {
FacesContext context = FacesContext.getCurrentInstance();
UIInput input = (UIInput)context.getViewRoot().findComponent(":createUser:email_id");
return input.isValid();
}
public void setEmailPrimariaValid(boolean emailPrimariaValid) {
this.emailPrimariaValid = emailPrimariaValid;
}
}
Имейте в виду, что я удаляюэтот bean-компонент из сеанса, если я пришел с другой страницы (url), поэтому bean-компонент снова выполняет конструктор.
Проблема: я пишу недопустимое электронное письмо, и он правильно устанавливает класс для inputErrorClass, но если я перехожу кдругая страница (поэтому компонент ввода по-прежнему недействителен), а затем возвращается к первой, класс остается для inputErrorClass.