gpt4 book ai didi

java - spring 将两个验证注解合二为一

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:43:10 24 4
gpt4 key购买 nike

我正在使用 Spring+Hibernate+Spring-MVC
我想定义一个结合其他两个预定义验证注释的自定义约束:@NotNull @Size,如下所示:

import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;

@NotNull
@Size(min=4)
public @interface JPasswordConstraint {
} // this is not correct. It's just a suggestion.

我想在我的表单模型中使用这个注解。

public class ChangePasswordForm {

@NotNull
private String currentPass;

@JPasswordConstraint
private String newPass;

@JPasswordConstraint
private String newPassConfirm;
}

用户 Controller .java

@RequestMapping(value = "/pass", method = RequestMethod.POST)
public String pass2(Model model, @Valid @ModelAttribute("changePasswordForm") ChangePasswordForm form, BindingResult result) {
model.addAttribute("changePasswordForm", form);
try {
userService.changePassword(form);
} catch (Exception ex) {
result.rejectValue(null, "error.objec", ex.getMessage());
System.out.println(result);
}
if (!result.hasErrors()) {
model.addAttribute("successMessage", "password changed successfully!");
}
return "user/pass";
}

但它不起作用。它接受少于 4 个字符的密码。
我该如何解决这个问题?

最佳答案

这有点晚了,但是在

中描述了结合验证注释的技术

https://docs.jboss.org/hibernate/stable/validator/reference/en-US/html_single/?v=5.4#section-constraint-composition

也许在撰写本文时它不可用,但解决方案如下

@NotNull
@Size(min=4)
@Target({ METHOD, FIELD, ANNOTATION_TYPE })
@Retention(RUNTIME)
@Constraint(validatedBy = { })
@Documented
public @interface JPasswordConstraint {
String message() default "Password is invalid";
Class<?>[] groups() default { };
Class<? extends Payload>[] payload() default { };
}

关于java - spring 将两个验证注解合二为一,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33483830/

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