Spring RestController - 找不到 java.lang.Integer 类型的返回值的转换器

2023-11-29

我目前正在尝试创建我的第一个带弹簧的休息服务,我不想让他回来XML结果(基于JAXB).

在一个非常基本的休息控制器上:

import org.springframework.web.bind.annotation.*;
import java.util.ArrayList;
import java.util.List;

@RestController
public class CVIController {
    @RequestMapping(value = "/resume")
    public @ResponseBody
    Integer getResume() {
        return 5;
    }
}

spring-servlet.xml 非常空:

<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:context="http://www.springframework.org/schema/context"
       xmlns:mvc="http://www.springframework.org/schema/mvc"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc.xsd">
    <context:component-scan base-package="fr.urouen"
    />
    <mvc:annotation-driven />
</beans>

还有 JDK8 下的 Tomcat 服务器,因此我可以确定所有模块都默认加载在 JVM 上...我抛出了以下异常:

org.springframework.web.util.NestedServletException: Request processing failed; nested exception is java.lang.IllegalArgumentException: No converter found for return value of type: class java.lang.Integer

我不想使用 Jackson,因为我知道 JAXB 可以处理这个问题。 但是在修改了我的代码的某些部分之后,我仍然找不到她被抛出的原因的答案。

Edit 1:

我尝试创建一个带有吸气剂的虚拟类,正如答案所说

public class Dummy {
    private int value;


    public int getValue() {
        return value;
    }

    public void setValue(int value) {
        this.value = value;
    }
}

@RestController
public class CVIController {
    @RequestMapping(value = "/resume")
    public ResponseEntity<Dummy> getResume() {
        Dummy dummy = new Dummy();
        dummy.setValue(5);
        return new ResponseEntity<Dummy>(dummy, HttpStatus.OK);
    }
}

但仍然得到完全相同的结果:

org.springframework.web.util.NestedServletException: Request processing failed; nested exception is java.lang.IllegalArgumentException: No converter found for return value of type: class fr.urouen.model.Dummy

最简单的解决方案是返回一个 String 并删除 @ResponseBody 注释。根据定义,作为休息控制器,返回一个字符串,这就是这个特定示例的方法。

如果您需要更全面的解决方案,Spring 默认情况下使用 Jackson 进行从对象到 JSON 的转换。 @ResponseBody 自动执行此操作。

我非常确定 Integer 不起作用,因为它不是带有 getter 和 setter 以及可以转换为 JSON 的东西的 POJO。即 { 5 } 不是有效的 JSON 对象。

如果你有这样的课程:

public class returnObject() {
  private int value;
  ... getters/setters
}

然后这样做了:

@RestController
@ResponseBody
public ReturnObject getValue() {
   ReturnObject ret = new ReturnObject();
   ret.setValue(5);
   return ret;
}

然后你会得到这个:

{ "value" : 5 }

您还需要将 jackson 添加到您的 pom 中:

<dependency>
  <groupId>com.fasterxml.jackson.core</groupId>
  <artifactId>jackson-databind</artifactId>
  <version>2.9.4</version>
</dependency>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Spring RestController - 找不到 java.lang.Integer 类型的返回值的转换器 的相关文章

随机推荐

  • 解析多个配置文件的最佳实践

    解析多个配置文件的最佳实践是什么 如果有的话 我想解析mysql服务器配置并重新编写配置 该配置允许发出多行 例如 includedir etc mysql d 有趣的是 某些配置可能位于主文件中 但其他配置可能位于子文件中 我认为 pyp
  • 使用 PHP 将 URL 中的空格替换为 %20

    我希望用 20 替换 url 中的所有空格实例 我将如何使用正则表达式做到这一点 谢谢你 如果您只想用另一个字符串替换一段字符串 则无需使用正则表达式 使用str replace 应该绰绰有余 new str replace 20 your
  • Django:如何让 South 为添加到 INSTALL_APPS 的第三方应用程序创建表?

    我正在尝试使用django 图像裁剪器 Link 在我的项目中 我将其添加到settings py中的INSTALL APPS中并成功解决 该应用程序需要一些数据库表才能使用 所以我必须创建它们 由于我一直在使用 South 因此我需要使用
  • iOS 库到 BitCode

    我最近下载了 Xcode 7 beta Xcode 抱怨我的一些 C 库没有编译成 BitCode 我该如何告诉 Clang 生成与 iOS 兼容的 BitCode 我在 stackoverflow 上看到过类似的答案 但我不知道它们是否适
  • 如何将元组数据提取为单元素格式

    我从以下内容中得到了良好的结果 但是如何从元组中提取该数据 换句话说 如何清理数据 这是数据库里的数据 我跑出来了 gt gt gt policy id 2309L 118L 94L gt gt gt for i in policy id
  • Visual Studio代码EPERM操作不允许

    每次我尝试在 vsc 上安装新扩展时 我都会得到 Error while loading extensions EPERM operation not permitted 接下来它告诉我打开一个 obsolete 文件 但它告诉我的文件路径
  • 在没有 Java EE 应用服务器的情况下使用 Web 服务在 C# 和 Java 之间进行互操作?

    我的处境很困难 我们有一个公开基于 Java 的 API 的第三方企业系统 然而 我们是一个100 Net 导向的开发团队 本质上 我需要用 C 代码可以调用的东西来包装 Java API Web 服务固然很棒 但我们的基础设施上唯一支持的
  • 从网址中删除 web/app_dev.php/

    我已经在 symfony 2 中完成了我的应用程序 现在我想从网址中删除 web app dev php 我读到了这一点 并在这样做之后 php app console cache clear env prod no debug 并添加 h
  • 创建 libcurl http post 表单

    我如何创建一个curl form 例如在stackoverflow上发帖 如果我查看问题表单页面的来源 我会看到
  • 有没有办法获取队列中的最后一个元素?

    我知道堆栈是最好也是最简单的方法 但是是否有可能获得队列中的最后一个元素而无需将任何内容出列 您可以简单地执行以下操作 Assumes T is a reference type if it s a value type then you
  • 删除文本文件中的特定行

    我正在研究一个选项 如果用户输入确切的标题和作者 该选项将能够删除指定的行 但是我无法让它发挥作用 我的功能内容如下所示 fnRemoveBook echo Title read Title echo Author read Author
  • 如何在java中从tcp流播放声音

    还有另一个应用程序在此套接字上写入原始 wav 文件 客户端启动并开始收听当前正在播放的歌曲 Socket clientSocket new Socket localhost 9595 AudioInputStream stream Aud
  • TypeScript 错误 TS2339:“EventTarget”类型上不存在属性“matches”

    我收到一个我无法从 TypeScript 中理解的错误 我正在使用一段完全有效的 JavaScript 但它在我的 IDE 中以及通过 Gulp 进行预处理期间都标记了错误 我已将其剥离回其核心 但仍然收到错误 即使这是完全有效的 JS d
  • 将段落的每一行包裹在一个跨度中

    我有一个 div 元素 它将显示一个没有换行符的段落 如示例中所示 div Lorem Ipsum is simply dummy text of the printing and typesetting industry Lorem Ip
  • 无法同时满足约束 - 没有适当的约束

    我已经检查并删除了每个用户限制 但仍然收到以下错误ONLY旋转设备后 我完全不知道为什么 有人有什么想法吗 2013 01 14 21 30 31 363 myApp 35869 c07 Unable to simultaneously s
  • 声纳添加新项目

    我正在尝试添加一个新项目到sonar 运行声纳跑步者时 我收到以下错误 任何人都可以帮助我解决这个问题 sonar runner Runner configuration file opt lampp htdocs typo3 sonar
  • 如何在不使用 SQLAlchemy 引擎的情况下将数据帧写入 Postgres 表?

    我有一个数据框 我想写入Postgres数据库 此功能需要成为Flask app 现在 我通过创建一个单独的脚本来运行此插入部分SQLAlchemy 引擎并将其传递给df to sql 将数据框写入数据库表 但是当我将此功能集成到 Flas
  • 将不同大小的圆形打包成矩形 - d3.js

    我试图打包圈子不同尺寸放入一个长方形容器中 不包装在圆形容器中d3 js捆绑在一起 在下面d3 layout pack 这是我想要实现的布局 我找到了这张纸在这个问题上 但我不是数学家 无法彻底理解这篇文章并将其转换为代码 任何人都可以建议
  • Django 简单标签在 if 条件下不起作用

    我想通过使用审核工具添加块来自定义 django admin 的视频对象更改表单 当我在 if 条件下使用自定义 simpletags 时 它不起作用 模型 py class Video models Model class Meta db
  • Spring RestController - 找不到 java.lang.Integer 类型的返回值的转换器

    我目前正在尝试创建我的第一个带弹簧的休息服务 我不想让他回来XML结果 基于JAXB 在一个非常基本的休息控制器上 import org springframework web bind annotation import java uti