私は JSF を初めて使用し、1 つの JSF アプリケーションを使用しています。
空白文字列の 1 つのパスワード フィールドを検証したいと考えています。
私はJavascriptでそれを行う代わりに、検証のために関数を呼び出していることを知っています.
私の必要性は、パスワードフィールドの値が空白の場合、バリデーター関数から検証され、今まで正しく進んでいますが、検証後、その時点で UI bav=ck に =s が来ると、パスワードフィールドは空でなければなりません。
パスワードフィールドが空(スペースのみを含む)の場合は、空白に設定するか、データをそのまま保持します。
今までの私の試み、JSFビューページ singin.xhtml
<h:outputText styleClass="outputBox" style="margin: 3px;"
value="Password" />
<h:inputSecret id="password" required="true"
requiredMessage="Please enter your password"
value="#{userActionManager.dto.password}"
validator="#{userActionManager.validateSamePassword}">
<a4j:ajax event="change" execute="@this" bypassUpdates="true" />
</h:inputSecret>
バリデーターメソッド。
public void validateSamePassword(FacesContext fc, UIComponent component, Object obj) {
System.out.println("UserActionManager.validateSamePassword()");
String confirmPassword = (String)obj;
System.out.println("Password is :" + confirmPassword);
if(confirmPassword!=null && confirmPassword.trim().equals("")) {
FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_ERROR, "Password cannot be blank", " detail Passwords do not match!");
// System.out.println(component.getFamily());
// String field1Id = (String) component.getAttributes().get("password");
// Find the actual JSF component for the client ID.
// UIInput textInput = (UIInput) fc.getViewRoot().findComponent("password");
// textInput.setValue("");
dto.setPassword(null);
throw new ValidatorException(message);
}else{
dto.setPassword(confirmPassword);
}
}
オプション dto.setPassword(null); を試しました。しかし、表示に戻ると、パスワードフィールドに空白が残っているため、手動で削除する必要があります。
私は何が欠けていますか?