先来看下 这个注解是个啥:当请求的参数名称与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); } }
完.