java - 返回 Spring MVC Post 请求的 JSON 响应

标签 java http spring-mvc java-7 plupload

我有以下 Controller 方法,它将文件上传到我的服务器。我想返回 Plupload 状态的 JSON。然而,响应似乎是作为调度而不是 json @ResponseBody 发送回来的。有什么想法吗?

    private static final String RESP_SUCCESS = "{\"jsonrpc\" : \"2.0\", \"result\" : \"success\", \"id\" : \"id\"}";
    private static final String RESP_ERROR = "{\"jsonrpc\" : \"2.0\", \"error\" : {\"code\": 101, \"message\": \"Failed to upload file.\"}, \"id\" : \"id\"}";

    @RequestMapping(method = RequestMethod.POST)
    public String uploadItem(@RequestBody MultipartFile file,
                             @RequestParam String name,
                             @RequestParam(required = false, defaultValue = "-1") int chunks,
                             @RequestParam(required = false, defaultValue = "-1") int chunk) {
        Media media = new Media();
        try {
            Path path = Paths.get("/Users/username/Desktop/Test", file.getOriginalFilename());
            media.setContentType(file.getContentType());
            media.setFileName(file.getOriginalFilename());
            media.setFileSize(file.getSize());
            media.setFilePath(path.toString());
            if (media.getContentType().contains("image")) {
                Image image = new Image();
                image.setImagePath(path.toString());
                imageDao.save(image);
            }
            byte[] bytes = file.getBytes();
            Files.write(path, bytes, StandardOpenOption.CREATE);
            mediaDao.save(media);
            return RESP_SUCCESS;
        } catch (IOException e) {
            e.printStackTrace();

        }
        return RESP_ERROR;
    }
}

抛出以下错误:

WARN - No mapping found for HTTP request with URI [/{"jsonrpc" : "2.0", "result" : "success", "id" : "id"}] in DispatcherServlet with name 'cr'

最佳答案

我认为你的方法应该用@ResponseBody注释。

@RequestMapping(method = RequestMethod.POST)
@ResponseBody
public  String uploadItem(@RequestBody MultipartFile file,
                             @RequestParam String name,
                             @RequestParam(required = false, defaultValue = "-1") int chunks,
                             @RequestParam(required = false, defaultValue = "-1")

这是 Spring 检查 Json 转换的方式:

  • Jackson 库存在于项目类路径中
  • mvc:annotation-driven已启用
  • 返回带有@ResponseBody注释的方法

Spring 将自动处理 JSON 转换。

关于java - 返回 Spring MVC Post 请求的 JSON 响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16888628/

相关文章:

java - Spring MVC 使用 Get 请求绑定(bind)命令对象

Java 方程/表达式生成器

Java 多线程 - 使用数据库和 http 连接取消 future 任务的更好方法?

java - Android Java Http Post 到 PHP 服务器始终为 NULL?

html - 将混合内容 http 转换为 https

java - Spring 4 中的错误 | java.lang.ClassNotFoundException : org. springframework.web.servlet.DispatcherServlet

java - 无法解析类型 org.springframework.context.ApplicationContextAware。它是从所需的 .class 文件中间接引用的

Java 索引越界异常

java - 如何更改哪个组件正在监听事件

java - Spring 启动 AngularJs $http.get 为空