先来看下 这个注解是个啥:当请求的参数名称与Controller的业务方法参数名称不一致时,就需要通过@RequestParam注解显示的绑定。
注解@RequestParam还有如下参数可以使用:
value:与请求参数名称
required:此在指定的请求参数是否必须包括,默认是true,提交时如果没有此参数则报错
defaultValue:当没有指定请求参数时,则使用指定的默认值赋值
有这么个 表单POST:
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<form action="/ok" method="post">
<input type="text" name="name1">
<input type="submit">
</form>
</body>
</html>
然后我们 控制器是这样的:
package com.bihu.Controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
@Controller
public class TestController {
@RequestMapping("/ok")
@ResponseBody
public void post(String name){ //注意这里是 name
System.out.println(name);
}
}
会发现 name 和 name1 不匹配 虽然成功交互 但是打印出来的是null ,那么@RequestParam 注解就登场了:
package com.bihu.Controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
@Controller
public class TestController {
@RequestMapping("/ok")
@ResponseBody
public void post(@RequestParam(value = "name1") String name){ //注意这里绑定了 name1 name就没用了啊!
System.out.println(name);
}
}
你参数绑定了 name1 那么 你在表单哪里 name = name 就会报错哦!!!! 所以 两个方式 你选一个。 这点千万注意啊。
required: 这个属性的意思是说 如果你请求没有带任何的请求数据【为空】,那么这个属性为true 的话【默认是 true】,那么会报错,如果为false 则允许 这样做 但是参数肯定是null的.
package com.bihu.Controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
@Controller
public class TestController {
@RequestMapping("/ok")
@ResponseBody
public void post(@RequestParam(value = "name1",required = false) String name){
System.out.println(name);
}
}
defaultValue 如果是第二种 没有任何的请求数据 他就会用这个 defaultaValue 进行填充:
package com.bihu.Controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
@Controller
public class TestController {
@RequestMapping("/ok")
@ResponseBody
public void post(@RequestParam(value = "name1",required = false,defaultValue = "请求为空 我是默认值!") String name){
System.out.println(name);
}
}
完.