@RequestParam@PathVariable在处理特殊字符时有什么区别?

+@RequestParam接受为空格。

@PathVariable的情况下,+被接受为+

最佳答案

@PathVariable是从URI中获取一些占位符(Spring将其称为URI模板)
—参见Spring Reference Chapter 16.3.2.2 URI Template Patterns
@RequestParam也是要从URI中获取参数-请参见Spring Reference Chapter 16.3.3.3 Binding request parameters to method parameters with @RequestParam


如果URL http://localhost:8080/MyApp/user/1234/invoices?date=12-05-2013在2013年12月5日获取了用户1234的发票,则控制器方法如下所示:

@RequestMapping(value="/user/{userId}/invoices", method = RequestMethod.GET)
public List<Invoice> listUsersInvoices(
            @PathVariable("userId") int user,
            @RequestParam(value = "date", required = false) Date dateOrNull) {
  ...
}


另外,请求参数可以是可选的,从Spring 4.3.3开始,路径变量can be optional as well。但是请注意,这可能会更改URL路径层次结构并引入请求映射冲突。例如,/user/invoices是否提供用户null的发票或有关ID为“发票”的用户的详细信息?

10-08 11:49