我是 JSF 的新手,正在经历一个 JSF 应用程序。
我想验证空白字符串的一个密码字段。
我知道不是在 Javascript 中执行此操作,而是调用一个函数进行验证。
我的需要是,如果密码字段的值为空白,那么它会从验证器函数进行验证,直到现在它运行正常,但在验证之后,当它到达 UI bav=ck 时,密码字段应该为空。
如果密码字段为空(仅包含空格),那么我希望将其设置为空白,否则保持数据不变。
我到现在为止的尝试,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); 但是当它返回查看时,密码字段中的空格仍然存在,我必须手动删除。
我错过了什么?