Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
122 views
in Technique[技术] by (71.8m points)

java - 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.

question from:https://stackoverflow.com/questions/65951362/how-validate-an-object-using-valid-in-spring-boot

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

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);
}

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...