在后台向前端传递数据时遭遇了这个报错
先看我的依赖配置:
pom.xml:
<!--依赖json类-->
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
</dependency>
在网上找了很多种解决方法
场景重现:
return 基本类型木有问题,但是return 对象的时候就报出了该问题,
网上答案汇总:
1、缺失Jackson 依赖,如果有 spring-boot-starter-web依赖可排除该问题
2、是否是 POJO (get set 方法是否有)
这是我的contrler类:
package com.maven.controller;
import com.maven.util.FtpUtil;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.multipart.MultipartFile;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
@Controller
@RequestMapping("/file")
public class UploadController {
@RequestMapping("/upload",prodecues="text/html;charset=utf-8")
@ResponseBody
public Map<String,Object> upload(MultipartFile fileName){
System.out.println("fileName:"+fileName);
String originalName = fileName.getOriginalFilename();//上传文件的名字
Map<String,Object> map = new HashMap<>();
try {
boolean flag = FtpUtil.uploadFile("192.168.17.131", 21, "ftpuser", "123", "/home/ftpuser/img/", "/2020", originalName, fileName.getInputStream());
if(flag){
/**
* //成功时
* {
* "error" : 0,
* "url" : "http://www.example.com/path/to/file.ext"
* }
* //失败时
* {
* "error" : 1,
* "message" : "错误信息"
* }
*/
map.put("error",0);
map.put("url","ftp://ftpuser:123@192.168.17.131/img/2020/"+originalName);
}else{
map.put("error",1);
map.put("message","上传失败");
}
} catch (IOException e) {
e.printStackTrace();
map.put("error",1);
map.put("message","上传失败");
}
System.out.println(map);
return map;
}
}
在经过很久的探究之后,发现我的依赖配置并没有问题
最后发现问题的根源在于,@RequestMapping("/upload",prodecues=“text/html;charset=utf-8”)
这个小习惯,本来写这个是设置返回数据的编码,但是在这里,因为使用了@ResponseBody,所以返回json类型,但是我强制设置了,prodecues=“text/html;charset=utf-8”,导致我痛苦了几个小时,最后还是发现了错误很开心了。
改成 @RequestMapping("/upload")
即可了。