Spring Validator 注解不起作用

问题描述 投票:0回答:1

在我的请求正文中,我以不同的方式传递参数进行验证。

{
  
  “name” : []
}

这里正在执行我想用自定义错误消息限制的操作。

还有

{
 “Name” : “”
}

我收到 400 错误请求,那么如何使用正确的错误消息来处理此问题。

在我的控制器中我有

if (myRequestResult.getName() == null || myRequestResult.getName().isEmpty()) {
    throw exceiption ()
 }else{
    myService.setName(myRequestResult.getName())
 }

工作正常,但现在我删除了它并使用验证器注释。

@Data

public class MyResultRequest {
   @NotEmpty(message = "List of name must not be empty")
  @Size(min = 1, message = "List of name must have at least one element")
  private List<String> name;
}

这是我的休息控制器

@Log4j2
@RestController(value = "apiMyController")
@RequestMapping(path = "/api/v1/someRandomeURL")
@RequiredArgsConstructor(onConstructor = @__({@Autowired}))
public class ExecutionResultsController {
  
  @RequestMapping(method = RequestMethod.POST)
  public ExecutionResultDTO create(@RequestBody  MyRequestResult myRequestResult) throws Exception {
    
     myService.setName(myRequestResult.getName());
  }
}  

任何人都可以告诉我如何解决这个问题,因为我从这里开始关注这个问题Doc

java spring spring-boot annotations
1个回答
0
投票

您需要

@javax.validation.Valid
到其余控制器的参数才能启用验证。

所以你的休息控制器会像

@RequestMapping(method = RequestMethod.POST)
public ExecutionResultDTO create(@Valid @RequestBody  MyRequestResult myRequestResult) throws Exception {    
     myService.setName(myRequestResult.getName());
}
© www.soinside.com 2019 - 2024. All rights reserved.