带有可选参数的 Spring @RequestMapping
Posted
技术标签:
【中文标题】带有可选参数的 Spring @RequestMapping【英文标题】:Spring @RequestMapping with optional parameters 【发布时间】:2018-08-30 09:14:33 【问题描述】:我的控制器在请求映射中的可选参数有问题,请查看下面的控制器:
@GetMapping(produces = MediaType.APPLICATION_JSON_VALUE)
public ResponseEntity<List<Books>> getBooks()
return ResponseEntity.ok().body(booksService.getBooks());
@GetMapping(
produces = MediaType.APPLICATION_JSON_VALUE,
params = "from", "to"
)
public ResponseEntity<List<Books>>getBooksByFromToDate(
@RequestParam(value = "from", required = false) String fromDate,
@RequestParam(value = "to", required = false) String toDate)
return ResponseEntity.ok().body(bookService.getBooksByFromToDate(fromDate, toDate));
现在,当我发送如下请求时:
/getBooks?from=123&to=123
没关系,请求转到“getBooksByFromToDate”方法 但是当我使用发送类似的东西时:
/getBooks?from=123
或
/getBooks?to=123
它转到“getAlerts”方法
是否可以在 @RequestMapping 中设置可选参数 = "from", "to" ?有什么提示吗?
【问题讨论】:
你好,我也在找相同的,如果你有解决方案,请更新 【参考方案1】:使用默认值。示例:-
@GetMapping(produces = MediaType.APPLICATION_JSON_VALUE)
public ResponseEntity<List<Books>> getBooksByFromToDate(@RequestParam(value = "from", required = false, defaultValue="01/03/2018") String fromDate, @RequestParam(value = "to", required = false, defaultValue="21/03/2018") String toDate)
....
【讨论】:
【参考方案2】:只需按照the Spring's docs 中的说明使用defaultValue
:
默认值
当请求参数为 未提供或值为空。
【讨论】:
以上是关于带有可选参数的 Spring @RequestMapping的主要内容,如果未能解决你的问题,请参考以下文章
在 spring data jpa 存储库中搜索许多可选参数
带有 AMQP 和 RabbitMQ 的 Spring,带有可选 x-dead-letter-exchange 的队列