Может ли @Nullable использоваться вместо required = false для параметра метода контроллера @RequestParam? - PullRequest
1 голос
/ 28 сентября 2019

Существует два документированных способа пометить параметр метода Spring как необязательный:

(1) Добавить required=false к аннотации @RequiredParam:

public String books(@RequestParam(name = "category", required = false) String category) {

ссылка

(2) Измените тип параметра на Optional<T>:

public String books(@RequestParam(name = "category") Optional<String> category) {

ссылка


Но, похоже, также работает следующее:

(3) Поместите @Nullable аннотация к параметру:

public String books(@Nullable @RequestParam(name = "category") String category) {

Я предпочитаю № 3, но я бы предпочел использовать его, если бы он был задокументирован.Я искал документацию, но все, что я могу найти, это то, что задокументировано для @Nullable:

Обычная аннотация Spring для объявления, что аннотированные элементы могут быть нулевыми при некоторых обстоятельствах.

Я не могу найти ни одного примера, показывающего @Nullable, использованного с @RequestParam.

Кто-нибудь знает, если и где это задокументировано?

1 Ответ

2 голосов
/ 28 сентября 2019

@Nullable - это хорошо известная аннотация, которая может применяться к полям, методам и параметрам.Зная его популярность, может быть, Spring не против не упомянуть об этом.Итак, почувствуйте, как жарь его использовать.

Теперь перейдем к выбору использования проверки: я либо пойду с @Nullable, либо required = false.

Optional<T> пришел в Java 8 дляпредотвращение NullPointerException.Таким образом, <Optional<String> никогда не даст вам значение null, оно либо вернет value, либо Optional.empty.И чтобы получить значение из этого, вам нужно вызвать дополнительный метод get().

Итак, если вся идея заключается в том, чтобы пометить любой параметр запроса как nullable, используйте @Nullable или required=false

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