Rostislav Olshevsky
Rostislav Olshevsky

Reputation: 429

Relaxing default validations using jakarta validation groups

Is it possible to relax validation using jakarta validation groups?

For example, for default configuration I have the following validations:

class Person {
  
  @NotNull
  private String name;
  
  @NotNull
  private String email;
}

Call without specifying validation group works as expected:

validator.validate(person) //validates name AND email

But for this case:

validator.validate(person, EmailNullable.class) //validates name ONLY

... I want only name to be validated, email could be nullable.

Is it possible somehow define EmailNullable validation group to relax default validations and suppress NotNull for email field?

Upvotes: 0

Views: 385

Answers (1)

boze-noob
boze-noob

Reputation: 147

Can you define validation groups to selectively apply constraints to fields based on the validation context? By specifying the groups attribute in the @NotNull annotation, you can ensure constraints are applied only for the specified groups.

Define Interfaces:

public interface DefaultValidationGroup {}
public interface EmailNullableValidationGroup {}

Apply Validation Groups:

public class Person {
  
  @NotNull(groups = {DefaultValidationGroup.class, EmailNullableValidationGroup.class})
  private String name;
  
  @NotNull(groups = DefaultValidationGroup.class)
  private String email;
}

Validate:

validator.validate(person, DefaultValidationGroup.class);

validator.validate(person, EmailNullableValidationGroup.class);

Here are some useful references:

Upvotes: 1

Related Questions