浏览器向后端提交数据保存到数据库
前端数据
可以看到前端发送的请求和数据一片空白,且后端也没有报错
但是请求竟然发送了,后端插入了一条记录,但是很多数据都是空值
分析:
前端发送了请求但是未成功携带数据,且前后端无异常。
springmvc接收参数的方式主要有三种
1:采用单个参数:加上@RequestParam注解则必须使前端参数名与注解value值相等,不加@RequestParam注解,当参数数量只有一个时,前后端参数名随意,当大于1时,前后端参数名必须相同
@RequestMapping("/xxx/xxx/xxx.do")
public String function(
@RequestParam(value = "name")String name,
String age, ) {
//代码块
return "xxx/xxx/xxx";
}
2:采用实体类来接收:这种方式适用于发送的参数是某实体类的多个成员变量,这种方式必须保证前端参数名和实体类的成员变量名一一对应
@RequestMapping("/xxx/xxx/xxx.do")
public String function(User user) {
//代码块
return "xxx/xxx/xxx";
}
3:采用Map接收:使用这种方式必须在参数前加上@RequestParam 注解才能成功封装成map,springmvc会自动将前端的参数名作为key,参数值作为value传给服务器端封装为map
@RequestMapping("/xxx/xxx/xxx.do")
public String function(@RequestParam Map<String, Object> map) {
//代码块
return "xxx/xxx/xxx";
}
分析三种接收参数的方式
将自身代码进行改进,在map参数前加上@RequestParam注解再次运行
@RequestMapping("/workbench/transaction/saveCreateTran.do")
public @ResponseBody Object saveCreateTran(@RequestParam Map<String, Object> map, HttpSession session){
User user = (User) session.getAttribute(Constant.SESSION_USER);
ReturnObject returnObject = new ReturnObject();
//处理参数
map.put(Constant.SESSION_USER, user);
try {
tranService.saveCreateTran(map);
returnObject.setCode(Constant.RETURN_OBJECT_CODE_SUCCESS);
}catch (Exception e){
e.printStackTrace();
returnObject.setCode(Constant.RETURN_OBJECT_CODE_FAIL);
returnObject.setMessage("系统繁忙,请稍后....");
}
return returnObject;
}
可以看到数据正常完整的插入了