@Valid注释在春季中表示了什么?

在下面的示例中,参数用批注标记。ScriptFile@Valid

注记有什么作用?@Valid

@RequestMapping(value = "/scriptfile", method = RequestMethod.POST)    
public String create(@Valid ScriptFile scriptFile, BindingResult result, ModelMap modelMap) {    
    if (scriptFile == null) throw new IllegalArgumentException("A scriptFile is required");        
    if (result.hasErrors()) {        
        modelMap.addAttribute("scriptFile", scriptFile);            
        modelMap.addAttribute("showcases", ShowCase.findAllShowCases());            
        return "scriptfile/create";            
    }        
    scriptFile.persist();        
    return "redirect:/scriptfile/" + scriptFile.getId();        
}    

答案 1

它用于验证目的。

验证 在将用户输入绑定到模型后,通常对其进行验证。Spring 3 为使用 JSR-303 进行声明性验证提供了支持。如果类路径上存在 JSR-303 提供程序(如休眠验证器),则会自动启用此支持。启用后,您只需使用@Valid注释注释控制器方法参数即可触发验证:绑定传入的POST参数后,将验证约会表单;在这种情况下,验证日期字段值是否为 null 并在将来发生。


点击这里获取更多信息:
http://blog.springsource.com/2009/11/17/spring-3-type-conversion-and-validation/


答案 2

除了上面的答案之外,请看以下内容。的列用几个批注进行批注。通过对 (在本例中为 和 ) 触发验证的批注。这些注释可能来自不同的JSR-303提供商(例如,Hibernate,Spring.等)。AppointmentFormdate@ValidAppointmentForm@NotNull@Future

    @RequestMapping(value = "/appointments", method = RequestMethod.POST)
    public String add(@Valid AppointmentForm form, BindingResult result) {
        ....
    }

    static class AppointmentForm {

        @NotNull @Future
        private Date date;
    }

推荐