@PathVariable,获取URL模板变量
测试可接收List,Array,基本数据类型
html代码:
<script type="text/javascript">
$(document).ready(function(){
var $array = new Array();
$array.push(0);
$array.push(1);
$array.push(2);
$.ajax({
url:'${project_name}/springmvc/pathVariable/'+$array+'/'+$array+'/wang/true',
type:'get',
success:function(data){
}
});
})
</script>
java代码:
//{phone[]}/{str[]}/{name}/{isSet}可以看成占位符,代替对应的URL模板变量
@RequestMapping("/pathVariable/{phone[]}/{str[]}/{name}/{isSet}")
//@PathVariable的value值可写可不写,写上跟剧value值匹配,不写根据注解后边的属性名匹配
public void pathVariable(@PathVariable String name, @PathVariable(value = "str[]") List<String> strs,
@PathVariable(value = "phone[]") String[] phoneValue, @PathVariable(value = "isSet") boolean isSet,
HttpServletResponse response) throws Exception {
response.getWriter().write("success");
@PathVariable由PathVariableMethodArgumentResolver进行解析,如下是解析过程,直接获取uriTemplateVariables里边的变量进行赋值操作。
String URI_TEMPLATE_VARIABLES_ATTRIBUTE = HandlerMapping.class.getName() + ".uriTemplateVariables";
protected Object resolveName(String name, MethodParameter parameter, NativeWebRequest request) throws Exception {
Map<String, String> uriTemplateVars =
(Map<String, String>) request.getAttribute(
HandlerMapping.URI_TEMPLATE_VARIABLES_ATTRIBUTE, RequestAttributes.SCOPE_REQUEST);
return (uriTemplateVars != null) ? uriTemplateVars.get(name) : null;
}