gpt4 book ai didi

java - 在多个类的 spring MVC Controller 中应用自定义 validator

转载 作者:行者123 更新时间:2023-11-30 06:36:01 24 4
gpt4 key购买 nike

我有一个使用自定义 validator 的注册页面

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");
}

}
}

问题是我想在两种形式上应用它,所以我很困惑如何用两个类编写这个函数。这个功能现在只有注册类。如果我也想要 Person 类呢

public boolean supports(Class clazz) {
return Registration.class.equals(clazz);
}

我可以在那个函数中写多个类吗

这是我的 Controller

@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));
}

最佳答案

你可以这样做

public boolean supports(Class clazz) {
return Registration.class.equals(clazz) || Another.class.equals(clazz);
}

然后你的验证应该做这样的事情

    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");
}

}

我认为您不应该使用它,可能最好使用它来分隔类以提高可读性并降低复杂性。在您的 validator 或模型对象(访客模式)中引入层次结构并不是最好的解决方案。

关于java - 在多个类的 spring MVC Controller 中应用自定义 validator ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5273329/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com