我有一个使用自定义valiadtor的注册页面
public class CustomValidator implements Validator {
private Validator validator;
public CustomValidator(Validator validator) {
this.validator = validator;
}
@SuppressWarnings("rawtypes")
public boolean supports(Class clazz) {
return Registration.class.equals(clazz);
}
public void validate(Object target, Errors errors) {
validator.validate(target, errors);
Registration myModel1 = (Registration) target;
if (! myModel1.getConfirm_password().equals(myModel1.getPassword())) {
errors.rejectValue("confirm_password", "confirm_password.confirm");
}
}
}
Run Code Online (Sandbox Code Playgroud)
问题是我想将它应用于两种形式,所以我很困惑如何用两个类编写这个函数.此功能现在只有注册类.如果我也想要其中的Person类怎么办?
public boolean supports(Class clazz) {
return Registration.class.equals(clazz);
}
Run Code Online (Sandbox Code Playgroud)
我可以在该函数中编写多个类吗?
这是我的控制器
@InitBinder
public void initBinder(final WebDataBinder binder) {
binder.registerCustomEditor(Date.class, null, new CustomDateEditor(new SimpleDateFormat("dd-MM-yyyy"), true));
Validator validator = (Validator) binder.getValidator();
binder.setValidator(new CustomValidator((org.springframework.validation.Validator) validator));
}
Run Code Online (Sandbox Code Playgroud)
你可以做到这一点
public boolean supports(Class clazz) {
return Registration.class.equals(clazz) || Another.class.equals(clazz);
}
Run Code Online (Sandbox Code Playgroud)
那么你的验证应该做这样的事情
public void validate(Object target, Errors errors) {
validator.validate(target, errors);
String password = null;
String confirm = null;
if (target instanceof Registration) {
Registration registration = (Registration) target;
password = registration.getPassword();
confirm = registration.getConfirm_password();
} else if (target instanceof Another) {
Another another = (Another) target;
password = another.getPassword();
confirm = another.getConfirm_password();
}
if (! confirm.equals(password())) {
errors.rejectValue("confirm_password", "confirm_password.confirm");
}
}
Run Code Online (Sandbox Code Playgroud)
我不认为你应该使用它可能最好使用单独的类更好的可读性,并降低复杂性.在验证器中引入层次结构或模型对象(Vistor模式)不是最佳解决方案.
| 归档时间: |
|
| 查看次数: |
6058 次 |
| 最近记录: |