@RequestParam
和@PathVariable
在处理特殊字符时有什么区别? +
被@RequestParam
接受为空间。在@PathVariable
的情况下,+
被接受为+
。@RequestParam vs @PathVariable
回答
@PathVariable
是获得从URI一些占位符(春季称其为URI模板) - 见Spring Reference Chapter 16.3.2.2 URI Template Patterns@RequestParam
是获得一个参数 - 见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
得到用户1234在2013年12月5日的发票,控制器方法将如下所示:
@RequestMapping(value="/user/{userId}/invoices", method = RequestMethod.GET)
public List<Invoice> listUsersInvoices(
@PathVariable("userId") int user,
@RequestParam(value = "date", required = false) Date dateOrNull) {
...
}
此外,请求参数可以是可选的,但路径变量不能 - 如果它们是,它会改变URL路径层次并引入请求映射冲突。例如,/user/invoices
是否会为用户null
提供发票或有关ID为“发票”的用户的详细信息?
也可以是,所述应用/ X WWW的窗体-urlencoded midia型转换空间+,并且将reciever通过转换+到space.check的URL的详细信息的数据进行解码。 http://www.w3.org/TR/html401/interact/forms.html#h-17.13.4.1
@RequestParam用于访问请求中查询参数值的注释。请看下面的请求URL:
http://localhost:8080/springmvc/hello/101?param1=10¶m2=20
在上述URL请求,参数1和参数的值可以由下式获得:
public String getDetails(
@RequestParam(value="param1", required=true) String param1,
@RequestParam(value="param2", required=false) String param2){
...
}
以下是所支持的参数列表@ RequestParam注释:
- 默认值 - 这是缺省值作为备用机构,如果请求不具有值或为空。
- 名 - 参数的名称绑定
- 需要 - 参数是否是强制与否。如果是,则发送该参数失败将失败。
- 值 - 这是名称的别名属性
@PathVariable
@PathVariable标识在URI中用于传入请求的图案。让我们来看看下面的请求URL:
http://localhost:8080/springmvc/hello/101?param1=10¶m2=20
以上URL请求可以在Spring MVC写成如下:
@RequestMapping("/hello/{id}") public String getDetails(@PathVariable(value="id") String id,
@RequestParam(value="param1", required=true) String param1,
@RequestParam(value="param2", required=false) String param2){
.......
}
的@PathVariable注释只有一个用于绑定请求URI模板的属性值。允许在单一方法中使用多个@PathVariable注释。但是,确保不超过一种方法具有相同的模式。
而且还有一个更有趣的注解: @MatrixVariable
,并为其
@RequestMapping(value = "/{stocks}", method = RequestMethod.GET)
public String showPortfolioValues(@MatrixVariable Map<String, List<String>> matrixVars, Model model) {
logger.info("Storing {} Values which are: {}", new Object[] { matrixVars.size(), matrixVars });
List<List<String>> outlist = map2List(matrixVars);
model.addAttribute("stocks", outlist);
return "stocks";
}
但你必须启用控制器方法:
<mvc:annotation-driven enableMatrixVariables="true" >
字符串(例如'userName')是否有类型不是参数?我倾向于把它变成一个变量,但它也可能是一个参数。 – cst1992
..这里是原文: - http://javabeat.net/spring-mvc-requestparam-pathvariable/ –
@PathVariable - must be placed in the endpoint uri and access the query parameter value from the request
@RequestParam - must be passed as method parameter (optional based on the required property)
http://localhost:8080/employee/call/7865467
@RequestMapping(value=“/call/{callId}", method = RequestMethod.GET)
public List<Calls> getAgentCallById(
@PathVariable(“callId") int callId,
@RequestParam(value = “status", required = false) String callStatus) {
}
http://localhost:8080/app/call/7865467?status=Cancelled
@RequestMapping(value=“/call/{callId}", method = RequestMethod.GET)
public List<Calls> getAgentCallById(
@PathVariable(“callId") int callId,
@RequestParam(value = “status", required = true) String callStatus) {
}
- 1. Spring 3.0.6 MVC @PathVariable和@RequestParam在JSP视图中为空/空
- 2. 在Spring 3.0 GET请求中,@PathVariable和@RequestParam之间有什么区别
- 3. @PathVariable和@RequestMapping发出
- 4. Redirrect从到JSP到@RequestParam
- 5. 春3.0多@ PathVariable的问题
- 6. Spring Boot REST @RequestParam未验证
- 7. 弹簧组默认PathVariable
- 8. @PathVariable和@ModelAttribute重叠的值
- 9. Spring @PathVariable - java.lang.IllegalStateException
- 10. Spring可选@PathVariable?
- 11. 空@PathVariable结果
- 12. @RequestParam验证
- 13. JSON与@RequestParam
- 14. @PathVariable不绑定@RequestBody
- 15. SpringMVC @PathVariable被截断
- 16. Spring 3 @PathVariable验证
- 17. <mvc:resources>和PathVariable
- 18. 如何配置@PathVariable
- 19. Spring MVC的多个requestmapping,缺少requestparam
- 20. @requestparam value = date spring boot
- 21. @RequestParam失败了HttpServletRequestWrapper
- 22. AngularJS Spring MVC的@RequestParam
- 23. Spring MVC:@RequestParam验证
- 24. @RequestParam春不工作
- 25. @RequestParam为null(Spring MVC)
- 26. 将PathVariable传递给AJAX控制器
- 27. 既不@RequestBody也不@RequestParam工作
- 28. @PathVariable Spring 4中的验证
- 29. @PathVariable编码问题 - Spring MVC
- 30. @PathVariable春季控制器
@pathVariable可以使用POST请求吗? – ishanbakshi
'@ PathVariable'可以用于任何RequestMethod –
一个很好的例子。 – Sid