一尘不染

Java@RequestParam与@PathVariable

java

@RequestParam@PathVariable处理特殊字符之间有什么区别?

+@RequestParam空间接受。

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


阅读 325

收藏
2020-02-29

共1个答案

一尘不染

  • @PathVariable是从URI(Spring称为URI模板)中获取一些占位符—请参见Spring参考第16.3.2.2章URI模板模式
  • @RequestParam也是要从URI中获取参数—请参见Spring Reference第16.3.3.3章,使用@RequestParam将请求参数绑定到方法参数
    如果该网址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开始,路径变量也可以是可选的。但是请注意,这可能会更改URL路径层次结构并引入请求映射冲突。例如,是否/user/invoices提供nullID为“发票”的用户发票或有关用户的详细信息?

2020-02-29