我正在用Spring-Boot做练习,我试着搜索,但没有找到任何对我有用的东西。我试着返回一个JSON转换一个POJO,SB应该自动完成,但它返回:
2018-11-05 13:26:36.090警告1584 --- [nio-8080-exec-1] .w.s.m.s.默认处理程序异常解析程序:已解决[org.springframework.http.converter.HttpMessageNotWritableException]中无法写入数据的问题。找不到以下类型的返回值的转换器:示例示例示例演示
下面是我的pom.xml:
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.0.RELEASE</version>
<relativePath /> <!-- lookup parent from repository -->
</parent>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
还有我的POJO:
public class Foo {
private String bar;
/**
* @return the bar
*/
public String getBar() {
return bar;
}
/**
* @param bar
* the bar to set
*/
public void setBar(String bar) {
this.bar = bar;
}
}
控制器:
@RestController
public class PelisController {
@GetMapping(value = "/fooPoint")
public Foo fooPoint() {
Foo foo = new Foo();
foo.setBar("smthng");
return foo;
}
}
我不知道我做错了什么,因为我试过getters/setters方法,我试过用官方指南中的pom替换我的pom,没有任何帮助。
5条答案
按热度按时间svmlkihl1#
我今天刚遇到这个问题,花了几个小时来找出问题所在。我看到的几乎所有答案都是因为缺少getter和setter,或者在pom中添加了fasterxml依赖项。我已经有了getter和setter,我所遵循的教程不需要这些pom更改。
mariotepro的解决方案让我通过了这个问题。他的解决方案被埋在评论下面,所以我决定把它放在答案里,这样人们就可以很容易地看到它,以防他们遇到同样的情况。
所以,是的,只是重申一下,进入我的maven repo,删除fasterxml文件夹,重新运行maven是为我解决这个问题。
2o7dmzc52#
我认为除了getter和setter之外,你还需要一个默认的空构造函数,所以添加这个构造函数就可以了。一个简单的方法就是使用Lombok项目来添加这个构造函数以及get和set方法。
示例如下:
因此,您只需在Maven中添加依赖项,如下所示:
然后,您可以使用类中的注解,如(代码片段):
注解:@Data和@NoArgsConstructor创建getter、setter和空构造函数,这为您节省了锅炉板代码,我认为这相当整洁:)。
如果您感兴趣,这里有更多信息:https://projectlombok.org/
bksxznpy3#
从Spring Boot开始,
2.5.7
getters或fasterxml不能解决这个问题,但是在@RequestMapping中产生的设置会尝试设置produces = { "application/json" }
p3rjfoxz4#
人与类似的错误,我只是错过了下面的标题,而点击请求,尝试添加检查它是否工作!
Accept : application/json
monwx1rj5#
对我来说,当我没有指定带有content-type的头时,就会发生这种情况。
模型类-UserModel.java
使用此link设置lombok
控制器类-BasicController.java
当我发送没有标题的数据时发生以下错误
解决方案-按如下方式添加标题