Как проверить тип 'java.lang.Boolean' при загрузке Spring - PullRequest
1 голос
/ 30 мая 2019

У меня есть логическое поле, которое я хочу проверить, чтобы иметь только "true" или "false" в качестве значения (без кавычек). Но это поле также допускает «true» или «false» в качестве значения (с кавычками), которое я хочу ограничить.

Я пытался использовать аннотацию @Pattern для соответствия этим значениям. Но у меня есть следующая ошибка:

javax.validation.UnexpectedTypeException: HV000030: Не удалось найти валидатор для ограничения «javax.validation.constraints.Pattern», проверяющего тип «java.lang.Boolean». Проверьте конфигурацию для «перезапуска»

Мой код:

@Pattern(regexp = "^(true|false)$", message = "restartable field allowed input: true or false")
private Boolean restartable;

Что мне делать? Есть ли другой способ преодолеть эту проблему? Заранее спасибо.

Ответы [ 2 ]

1 голос
/ 30 мая 2019

вы можете использовать @NotNull и @AssertTrue или @AssertFalse утверждения, присутствующие в javax.validation, если цель состоит в том, чтобы обеспечить ненулевое и достоверное значение.

https://docs.oracle.com/javaee/7/tutorial/bean-validation001.htm

@NotNull
@AssertTrue
private Boolean restartable;

Not Null аннотации будет достаточно, если значение может быть либо true, либо false, поскольку логические значения в Java могут иметь только два значения.

1 голос
/ 30 мая 2019

Почему вы используете проверку текста в логическом поле?это то, что говорит об ошибке.

Я думаю, что было бы более разумно проверить, является ли оно нулевым или нет (используйте @NotNull);если он не равен NULL, то, безусловно, он является допустимым логическим значением, по определению он не может иметь никакого другого значения, кроме true или false.С другой стороны, если он нулевой, то это, вероятно, ошибка, которую вы хотите обнаружить.

...