Skip to content
Advertisement

How validate an object using @Valid in Spring Boot?

I’m working on a Spring Boot project and I’m trying to validate some fields from an object.

Actually I have an API which accepts parameters. I know I can use @Valid into API declaration like this:

@GetMapping(value="/...")
Object myMethod(@RequestParam(value="name") @Size(min = 3) String name)

But I don’t want to validate there. I have a “filter” object to validate the values, so I expect something like:

Controller file

@override
public Object myMethod(String name){
  @Valid Filter filter = new Filter(name)
}

And filter is not an entity, only a class with validations tags:

public class Filter

  @Size(min = 3)
  private String name;

  public Filter(name){
    this.name = name;
  }

  // getters and setters

So the idea is to use @Valid creating the object and throws an exception if any validation is not successfull. Is this possible?

I have found multiple solutions to validate query params, body requests and so on, but not about validate a single object created using new.

Advertisement

Answer

From what I can see that’s not possible. The closest solution to your case would be to manually validate the entity with:

@Autowired
private Validator validator;

and then validating your object like so:

@Override
public Object myMethod(String name){
    Filter filter = new Filter(name);
    validator.validate(filter);
}
Advertisement