8. SpringMVC - 请求数据 - 参数绑定注解@requestParam

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

 

 

完.

 

posted @ 2021-07-05 10:31  咸瑜  阅读(140)  评论(0编辑  收藏  举报