Как переопределить поведение по умолчанию RequestParam? - PullRequest
0 голосов
/ 13 февраля 2020

У меня есть API отдыха, и я не хочу заставлять клиентов отправлять параметры запроса. У меня есть почти 400 методов API, и я не хочу устанавливать для всех параметров значение «required = false»

Я хочу переопределить поведение по умолчанию Spring RequestParam. Я хочу установить значение по умолчанию для свойства «required» интерфейса RequestParam в значение «false».

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

1 Ответ

1 голос
/ 13 февраля 2020

Как было сказано выше - вы не можете изменить значение по умолчанию.

Некоторые возможные способы решения вашей проблемы:

  • пометьте необязательный параметр:
@RequestMapping(...)
public String url(@RequestParam("key") Optional<String> keyValue```){
}

или

@RequestMapping(...)
public String url(@RequestParam("key") @Nullable String keyValue){
}

(любая аннотация с частью имени «Nullable», т.е. javax.annotation.Nullable)

  • вообще не использовать аннотацию RequestParam - вместо этого используйте классы Pojo для привязки параметров:
@RequestMapping(...)
public String url(PojoRequestParameters parameters) {
}

//...

public class PojoRequestParameters {
        private String key;

        public String getKey() {
            return key;
        }

        public void setKey(String key) {
            this.key = key;
        }
    }
  • написать (и зарегистрировать) свою собственную аннотацию и использовать ее вместо RequestParam (невозможно создать псевдоним для аннотации RequestParam)
  • изменить значение аннотации во время выполнения (без ума и может не работает для аннотации метода), что-то вроде этого: https://www.baeldung.com/java-reflection-change-annotation-params
...