Java 仅在提交时进行Hibernate Bean验证
所以我只是使用注释设置hibernate验证 基本上是这样的Java 仅在提交时进行Hibernate Bean验证,java,hibernate,jsp,spring-mvc,hibernate-annotations,Java,Hibernate,Jsp,Spring Mvc,Hibernate Annotations,所以我只是使用注释设置hibernate验证 基本上是这样的 @NotNull(message="please enter your first name") @Size(min=5, max=25, message = "your name is under or over the allotted size) String lastName 验证本身在大部分情况下工作正常。提交时将触发大小组件。但是,如果我加载页面,验证NoTnLoT验证将触发它加载提醒用户填写空白输入的时刻。由于这
@NotNull(message="please enter your first name")
@Size(min=5, max=25, message = "your name is under or over the allotted size)
String lastName
验证本身在大部分情况下工作正常。提交时将触发大小组件。但是,如果我加载页面,验证NoTnLoT验证将触发它加载提醒用户填写空白输入的时刻。由于这是在bean中触发的,而且我还是SpringMVC的新手,我想知道是否有什么办法可以让它在提交而不是加载时触发
控制器代码
@RequestMappingvalue=/App
public ModelAndView loadAppPage(@RequestParam(value = "Sal", required = false) String Sal,
@RequestParam(value = "name1", required = false) String name1,
@RequestParam(value = "name2", required = false) String name2,
@ModelAttribute("newApp")@Valid App newApp, BindingResult result){
ModelAndView mav = new ModelAndView();
String timestamp = new java.text.SimpleDateFormat("MM/dd/yyyy h:mm:ss a").format(new Date());
if(sal != null || name1 != null || name2 != null |){
newContact.setSal(Sal);
newContact.setname1(name1);
newContact.setname2(name2);
new AppValidator().validate(newApp, result);
if(result.hasErrors()){
return new ModelAndView("App", "newApp", newApp);
}else{
appService.addApp(newApp);
/* mav.addObject("newApp", new App());*/
mav.setViewName("redirect:App.html");
return mav;
}
}
mav.addObject("newApp", newApp);
mav.setViewName("App");
return mav;
}
您正在使用http get加载页面?如果您不触发验证,它将不会发生。好的,也许我没有正确表达这一点。验证有效。bean设置正确。bean中有getter和setter。我想说的是,它会在我的表单的输入页面上触发notnull验证,这意味着当它加载时,输入是空白的,因此是空的,并且是一个错误,即使他们还没有机会填充值。我知道它是有效的。但是,验证并不能在POJO上的注释中即时进行。您需要触发验证器以获得验证。可能会发生两件事:您在POST请求时使用的自动验证框架,或者验证消息嵌入到页面中供javascript使用。如果您使用的是GET请求,那么请确保验证没有在javascript中对文档就绪进行触发。哦,好的,这更有意义,谢谢。好的,让我们假设我正在尝试在我的控制器中修复此问题。如果这是在页面加载或什么。有没有办法消除错误?如果result.hasErrors{}