使用spring-boot-starter-web“找不到可接受的表示形式”

我试图用来spring-boot-starter-web创建一个REST服务来提供Java对象的JSON表示。据我了解,这个boot-starter-

web jar应该可以自动处理通过Jackson的JSON转换,但是我却遇到了这个错误。

{ 

"timestamp": 1423693929568,

"status": 406,

"error": "Not Acceptable",

"exception": "org.springframework.web.HttpMediaTypeNotAcceptableException",

"message": "Could not find acceptable representation"

}

我的控制器是这个…

@RestController

@RequestMapping(value = "/media")

public class MediaController {

@RequestMapping(value = "/test", method = RequestMethod.POST)

public @ResponseBody UploadResult test(@RequestParam(value="data") final String data) {

String value = "hello, test with data [" + data + "]";

return new UploadResult(value);

}

@RequestMapping(value = "/test2", method = RequestMethod.POST)

public int test2() {

return 42;

}

@RequestMapping(value = "/test3", method = RequestMethod.POST)

public String test3(@RequestParam(value="data") final String data) {

String value = "hello, test with data [" + data + "]";

UploadResult upload = new UploadResult(value);

return upload.value;

}

public static class UploadResult {

private String value;

public UploadResult(final String value)

{

this.value = value;

}

}

}

pom.xml有…

<dependency>

<groupId>org.springframework.boot</groupId>

<artifactId>spring-boot-starter-web</artifactId>

<version>1.2.1.RELEASE</version>

</dependency>

<dependency>

<groupId>org.springframework.boot</groupId>

<artifactId>spring-boot-starter-tomcat</artifactId>

<version>1.2.1.RELEASE</version>

<scope>provided</scope>

</dependency>

mvn dependency:tree 显示spring-boot-starter-web确实确实取决于jackson2.4

databind,因此应该在类路径上。

[INFO] +- org.springframework.boot:spring-boot-starter-web:jar:1.2.1.RELEASE:compile

[INFO] | +- org.springframework.boot:spring-boot-starter:jar:1.2.1.RELEASE:compile

[INFO] | | +- org.springframework.boot:spring-boot:jar:1.2.1.RELEASE:compile

[INFO] | | +- org.springframework.boot:spring-boot-autoconfigure:jar:1.2.1.RELEASE:compile

[INFO] | | +- org.springframework.boot:spring-boot-starter-logging:jar:1.2.1.RELEASE:compile

[INFO] | | | +- org.slf4j:jul-to-slf4j:jar:1.7.8:compile

[INFO] | | | \- org.slf4j:log4j-over-slf4j:jar:1.7.8:compile

[INFO] | | \- org.yaml:snakeyaml:jar:1.14:runtime

[INFO] | +- com.fasterxml.jackson.core:jackson-databind:jar:2.4.4:compile

[INFO] | | +- com.fasterxml.jackson.core:jackson-annotations:jar:2.4.0:compile

[INFO] | | \- com.fasterxml.jackson.core:jackson-core:jar:2.4.4:compile

[INFO] | +- org.hibernate:hibernate-validator:jar:5.1.3.Final:compile

[INFO] | | +- javax.validation:validation-api:jar:1.1.0.Final:compile

[INFO] | | +- org.jboss.logging:jboss-logging:jar:3.1.3.GA:compile

[INFO] | | \- com.fasterxml:classmate:jar:1.0.0:compile

[INFO] | +- org.springframework:spring-web:jar:4.1.4.RELEASE:compile

[INFO] | | +- org.springframework:spring-aop:jar:4.1.4.RELEASE:compile

[INFO] | | | \- aopalliance:aopalliance:jar:1.0:compile

[INFO] | | +- org.springframework:spring-beans:jar:4.1.4.RELEASE:compile

[INFO] | | \- org.springframework:spring-context:jar:4.1.4.RELEASE:compile

[INFO] | \- org.springframework:spring-webmvc:jar:4.1.4.RELEASE:compile

[INFO] | \- org.springframework:spring-expression:jar:4.1.4.RELEASE:compile

…但是调用test服务会出现上述错误。test2test3可以很好地证明必须只是尝试将JSON转换失败?我是否缺少一些配置问题或注释?从我可以找到的所有示例中,不再需要为基本Jackson

JSON转换注释类。

任何帮助,不胜感激。

回答:

您没有UpdateResult的公共获取程序,例如:

public static class UploadResult {

private String value;

public UploadResult(final String value)

{

this.value = value;

}

public String getValue() {

return this.value;

}

}

我相信默认情况下自动发现处于启用状态,并将尝试发现您的吸气剂。您可以使用禁用它@JsonAutoDetect(getterVisibility=Visibility.NONE),在您的示例中将显示[]

以上是 使用spring-boot-starter-web“找不到可接受的表示形式” 的全部内容, 来源链接: utcz.com/qa/424201.html

回到顶部