можем ли мы дать @QueryParam типа boolean значение по умолчанию null? - PullRequest
1 голос
/ 22 апреля 2020

можем ли мы дать @QueryParam типа boolean значение по умолчанию null? если да, как мы это сделаем?

Вот как я пытался это сделать, но я все равно получаю значение false по умолчанию:

@POST
public String setMethod(
        @QueryParam("value1") @DefaultValue("null") Boolean value1)

1 Ответ

0 голосов
/ 22 апреля 2020

Вы должны попробовать без DefaultValue. Так как value1 не является примитивом, он должен оставаться null.

Итак, вот так:

@POST
public String setMethod(
        @QueryParam("value1") Boolean value1)

после spe c:

Если @DefaultValue не используется вместе с @QueryParam, а параметр запроса отсутствует в запросе, значение будет пустой коллекцией для List, Set или SortedSet; нуль для других типов объектов; и значение по умолчанию для примитивных типов.

Что касается вашего примера -> new Boolean("null") фактически равно false.

Таким образом, результат нормальный.

BTW: Нуль не должен быть допустимым параметром, поскольку логическое значение является двоичным значением 0 или 1. Как только оно переходит в три состояния ( null, false, true) больше не является истинным логическим значением и, возможно, если это приемлемо, предпочтительнее переключиться на значение enum.

Как насчет этого?

public enum Value {
    A ,
    B,
    ABSENT
}

@POST
public String setMethod(
        @QueryParam("value1") @DefaultValue("ABSENT") Value value1)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...