在我的申請,我有以下Validator
驗證驗證碼輸入:如何清除Validator類中的輸入字段?
@Named(value = "simpleCaptchaValidator")
@RequestScoped
public class SimpleCaptchaValidator implements Validator {
@Override
public void validate(FacesContext context, UIComponent component, Object value) throws ValidatorException {
HttpSession session = (HttpSession) context.getExternalContext().getSession(false);
Captcha secretCaptcha = (Captcha) session.getAttribute(Captcha.NAME);
// Clear the input field
EditableValueHolder input = (EditableValueHolder) component;
input.resetValue();
// Display an error msg if the entered words are wrong
if (!secretCaptcha.isCorrect(value.toString())) {
FacesMessage msg = new FacesMessage(FacesMessage.SEVERITY_ERROR, "Failed!", "You have entered wrong words.");
throw new ValidatorException(msg);
}
}
}
以上Validator
適用於非Ajax請求偉大的,當用戶不輸入錯誤驗證碼的話。但是,如果用戶輸入正確的驗證碼字,但其他組件上的驗證失敗,則驗證碼的輸入字段不會被清除。
如果您能告訴我如何解決上述問題,我將不勝感激。
請顯示一些相關的視圖代碼。 – user1983983
嗯,我想在無效驗證碼的情況下,你可能想從會話中刪除值? session.setAttribute(Captcha.NAME)=「」; – JBA