我即将在Spring 3.1
中设置表单验证。我正在使用Annotations来验证我的模型,如下所示:
型号:
@Column(name = "mailAddress", nullable = false)
@Email
private String mailAddress;
@Column(name = "school", nullable = false)
@NotBlank
@Size(min = 3, max = 100)
private String school;
控制器:
@RequestMapping(value = "/add", method = RequestMethod.POST)
public String addBooking(
@ModelAttribute("new-booking") @Valid Booking booking,
BindingResult result, Map<String, Object> model) {
if (result.hasErrors()) {
return "booking";
}
return "success";
}
问题是,它验证school
但不验证mailAddress
。如果您输入空mailAddress
,则会接受它。
答案 0 :(得分:2)
我认为可能你的验证问题可能与使用@Email验证注释你的验证器有效的事实有关,也就是有效的电子邮件形式如:“myname @ service”并不以扩展名结尾(如例如).com
如果这是您的问题......这是正常的,因为它还考虑了您的电子邮件具有以下格式:yourname @ localhost(内部电子邮件地址)
如果要验证经典电子邮件(格式为:myname@someservice.com),我认为您必须编写自定义验证器。
我希望我理解你的问题
答案 1 :(得分:0)
我找到了问题。电子邮件验证程序将接受空白电子邮件。要解决此问题,您只需向其添加@NotBlank
即可。实际上我认为可以为nullable = false,但不是。
@Column(name = "mailAddress", nullable = false)
@Email
@NotBlank
private String mailAddress;