Spring MVC 形参类型
spring mvc 形参类型
1 没有占位符号的,形参的名字为参数的名称 请求路径为:organtrans/t1/t5?a=1(a为形参的的名称必须一致)
@RequestMapping("/t5")
@ResponseBody
public String test5(int a)
{
return String.valueOf(a);
}
2 有占位符号的 请求路径为:organtrans/t1/t5/1/10(根据类型匹配方法)
@RequestMapping("/t1/{pageIndex}/{pageSize}")
public @ResponseBody String test1(@PathVariable("pageIndex") Integer pageIndex,
@PathVariable("pageSize") Integer pageSize) {
return MessageFormat.format("pageIndex{0},pageSize{1}", pageIndex, pageSize);
}
3 形参为Map的 这中类型一般为post 请求方式 请求参数需要转换为json 有对应的key 和value
@RequestMapping("/t2")
@ResponseBody
public String test2(@RequestBody Map<String, String> parameterMap) {
if (MapUtils.isNotEmpty(parameterMap)) {
return parameterMap.get("abc");
}
return null;
}
3 形参为实体类的 如果是提供接口 就需要转换为json 格式的参数
@RequestMapping("/t3")
@ResponseBody
public String test3(@RequestBody ContractInfoVo vo)
{
return JSONObject.toJSONString(vo);
}
如果是jsp获取js页面提交到controller 页面元素的name 要和实体类或者map 的key 一样这样mvc 会自动映射
总结:spring mvc 形参没有list类型如果要有list 需要使用pojo 封装类型 ; (spring mvc 低版本问题,新的可以,这个是很久的 不记得以前是什么版本了,现在用spring 4.3.17 可以)
入参为List
@PostMapping("/v1/property/ttt")
public Integer test(@RequestBody List<Property> properties) {
return properties.size();
}
构造入参: