@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为“发票”的用户的详细信息?