@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 的发票,则 Controller 方法看起来像:
@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 为“发票”的用户的详细信息?
https://stackoverflow.com/questions/13715811/