EDITをリセットします。私は、このコードのスニペットを持っている:カスタム検証とコンポーネントが
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;
}
}
私はこれを削除することに注意してください:
<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>
これは、管理するセッションBeanです別のページ(url)から来ている場合はセッションからのBeanです。そのため、Beanはコンストラクタを再度実行します。
問題:私は無効な電子メールを書き、クラスをinputErrorClassに正しく設定しますが、別のページに移動しても(入力コンポーネントが無効なので)、最初のクラスに戻ると、クラスはinputErrorClass。
が、これはEJBのように、本当に "セッションBean" となっていますか?または、「セッションスコープのマネージドBean」を意味しますか?アノテーションを見ることができないと、それは難しいです。 –
セッションスコープのマネージドBeanです.JSFバージョンは1.2です。 –
何のデバッグをしましたか?あなたがページに戻ったとき、isEmailPrimariaValid()はtrueを返しますか? –