使用自定义处理程序方法进行春季 MVC @Valid验证
我想注册一个可以处理以下处理程序方法定义的自定义HandlerMethodArgumentResolver
@Controller
@RequestMapping(method = RequestMethod.POST)
public String createDomain(@Valid Domain domain, BindingResult errors, @RequestParam("countryId") Long countryId) {
我可以注册我的解析器,它通过请求参数创建一个对象,通过覆盖来自。当Spring尝试解析该参数时,它会浏览其列表(有很多)并选择它的第一个。Domain
addArgumentResolver()
WebMvcConfigurerAdapter
Domain
HandlerMethodArgumentResolver
supports()
在上面的示例中,尽管我的解析器将被调用并且我的参数将被初始化,但注释将不会被处理,并且 的解析器将失败,因为它需要一个 ,或者处理程序方法中的参数,而我没有。Domain
@Valid
BindingResult
ErrorsMethodArgumentResolver
@ModelAttribute
@RequestBody
@RequestPart
如果我尝试通过添加@ModelAttribute
@RequestMapping(method = RequestMethod.POST)
public String createDomain(@Valid @ModelAttribute Domain domain, BindingResult errors, @RequestParam("countryId") Long countryId) {
一个实现, 将首先检查并解决参数(with and ),然后再使用我的自定义解析器。不会失败,但我不会在实例上具有自定义创建行为。HandlerMethodArgumentResolver
ModelAttributeMethodProcessor
supports()
@ModelAttribute
@Valid
BindingResult
Domain
我可以复制粘贴代码以进行验证并添加到 中的模型,但我希望有一种更简单的方法来解析我的参数并执行验证,而无需向模型中添加对象。有这样的方法吗?ModelAttributeMethodProcessor