1.函数定义为integer时,即使传入参数为空也不会报错
public class Hello {
@RequestMapping(value="first")
@ResponseBody
public String SayHi(Integer age) {
return "age:"+age;
}
}
2.传入数组
http://localhost:8080/user?name=zhangsan&age=18&info.phone=10087&address=ewe
@RequestMapping(value = "array")
@ResponseBody
public String array(String[] name){
StringBuilder sb=new StringBuilder();
for(String item:name){
sb.append(item).append(" ");
}
return sb.toString();
}
3.对象 多层级对象
user类中含有info类
http://localhost:8080/user?name=zhangsan&age=18&info.phone=10087&address=ewe
@RequestMapping(value="user")
@ResponseBody
public String user(User user){
return user.toString();
}
4.如果两个类中属性相同
user类中有name和age,admin类中也有name和age
http://localhost:8080/user?user.name=tom&admin.name=tre
@RequestMapping(value="user")
@ResponseBody
public String user(User user, Admin admin){
return user.toString()+" "+admin.toString();
}
@InitBinder("user")
public void initUser(WebDataBinder binder){
binder.setFieldDefaultPrefix("user.");
}
@InitBinder("admin")
public void initAdmin(WebDataBinder binder){
binder.setFieldDefaultPrefix("admin.");
}
5.list集合 如果参数直接写List<user> list是无效的需要先写一个listgrom类
http://localhost:8080/list?list[0].name=aa&list[1].name=bb
package entity;
import java.util.List;
public class ListForm {
private List<User> list;
public List<User> getList() {
return list;
}
public void setList(List<User> list) {
this.list = list;
}
@Override
public String toString() {
return "ListForm{" +
"list=" + list +
'}';
}
}
@RequestMapping(value="list")
@ResponseBody
public String list(ListForm listForm){
return listForm.toString();
}
6.
@RequestParam绑定单个请求参数值
- public String requestparam1(@RequestParam String username)
如果不使用@RequestParam,要求request传入参数名称和controller方法的形参名称一致,方可绑定成功。如果使用@RequestParam,不用限制request传入参数名称和controller方法的形参名称一致。通过@RequestParam中的required属性指定参数是否必须要传入,如果设置为true,没有传入参数就会报错。
7.@PathVariable绑定URI模板变量值
@RequestMapping(value="/users/{userId}/topics/{topicId}")
public String test(
@PathVariable(value="userId") int userId,
@PathVariable(value="topicId") int topicId)
请求的URL为“控制器URL/users/123/topics/456”,则自动将URL中模板变量{userId}和{topicId}绑定到通过@PathVariable注解的同名参数上,即入参后userId=123、topicId=456
8.
@ModelAttribute绑定请求参数到命令对象
public String test1(@ModelAttribute("user") UserModel user)
多了一个注解
@ModelAttribute("user")
,它的作用是将该绑定的命令对象以“user”为名称添加到模型对象中供视图页面展示使用。我们此时可以在视图页面使用
${user.username}
来获取绑定的命令对象的属性。