Search code examples
javaspringhibernate-validator

How to add additional info on java constraints


With java validation constraints, i.e.

@NotNull, @Size, etc

You can add a message field that your api can return to the client. Is there anyway to add additional fields such as a custom code?

The problem I have is that every possible error needs it's own message and code return to the client. (By code I mean a custom one in the response body, not a http status code).

I.e.

{
  message: foo can not be null,
  code: 10001
}

The only thing I can think of is to use custom validator classes on every single field which would be quite a lot of work, or have a giant if/else block that sets the code based on the message.

Can anyone think of a nicer solution?

Thanks in advance for any help :)


Solution

  • You can use the payload() parameter defined by all constraint types.

    You'd have to declare a class type for each one of your error codes:

    public interface Error_01 {}
    

    And then:

    public class SomeValidatedClass {
        @NotNull(payload=Error_01.class)
        private String someField;
    }