У меня есть ограничение, по которому я хочу использовать EL, чтобы настроить сообщение в соответствии с обстоятельствами. В зависимости от длины массива я хочу показать другое сообщение. Однако у меня возникли проблемы с получением длины этого массива.
Что я делаю не так?
import org.junit.jupiter.api.Test;
import javax.validation.*;
import java.lang.annotation.*;
import static org.assertj.core.api.Assertions.assertThat;
public class FooTest {
private final Validator validator = Validation.buildDefaultValidatorFactory().getValidator();
@Test
public void foo() {
var violations = validator.validate(new ObjectWithFoo());
assertThat(violations).extracting("message")
.containsExactly("Field value should be foo");
}
@Test
public void foos() {
var violations = validator.validate(new ObjectWithFoos());
assertThat(violations).extracting("message")
.containsExactly("Field value should be one of [foo, bar, baz]");
}
@Foo(foos = {"foo"})
private static class ObjectWithFoo{}
@Foo(foos = {"foo", "bar", "baz"})
private static class ObjectWithFoos{}
@Constraint(validatedBy = FooValidator.class)
@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
public @interface Foo{
Class[] groups() default {};
Class
Подробнее здесь: https://stackoverflow.com/questions/701 ... n-constrai