2016-08-03 6 views
2

У меня есть метод с ниже RequestMappings:Спринг остальное - по крайней мере один RequestParameter обязательным

@RequestParam(value = "someValue1", required = false) final String someValue1 
@RequestParam(value = "someValue2", required = false) final String someValue2 

Оба параметра помечены как необязательные. И в настоящее время я проверяю, какой атрибут предоставлен, и на основании этого предпринимаются некоторые действия. Возможно ли, чтобы в запросе всегда присутствовал хотя бы один из двух параметров?

PS: Я не ищу создания двух разных конечных точек.

+0

Я не думаю, что для параметров есть взаимозависимые проверки. Но почему бы не проверить их в своем методе? – Matt

+1

Да, это то, что я делаю. Но смотрел вокруг, если есть более элегантный способ сделать это. – Mubin

+0

Я предполагаю, что решение такого требования заставит аннотацию потерять свою элегантность ;-) Тем не менее, абсолютно правильный вопрос. – Matt

ответ

0

Просто отправьте параметр запроса в виде строковой карты и отметьте это как обязательный атрибут.

 public @ResponseBody String your_method(
    @RequestParam(value = "parameterMap", 
    required = true) Map<String,String> params){ 

       //String someValue1 = params.get("someValue1"); 
       // String someValue2 = params.get("someValue2"); 
      } 

Здесь вы должны указать один или оба параметра.

+2

Это неверно. Вы все равно можете передать карту без каких-либо значений. – Mubin

+0

Итак, теоретически это должно работать: '@RequestParam (required = true) @NotNull @Size (max = 1) Map params', где' SearchParamEnum' - это список имен параметров. –

Смежные вопросы