【问题标题】:No converter found for return value of type though having proper get set method尽管有正确的 get set 方法,但没有找到类型返回值的转换器
【发布时间】:2018-03-25 07:43:18
【问题描述】:

我收到以下错误。即使我在 POJO 中有正确的 get set 方法。

java.lang.IllegalArgumentException:未找到类型返回值的转换器:com.example.demo.entities.Department 类 在 org.springframework.web.servlet.mvc.method.annotation.AbstractMessageConverterMethodProcessor.writeWithMessageConverters(AbstractMessageConverterMethodProcessor.java:187) ~[spring-webmvc-4.3.12.RELEASE.jar:4.3.12.RELEASE]

pom.xml

   <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
        <version>1.5.8.RELEASE</version>
    </dependency>

POJO:

package com.example.demo.entities;

import javax.persistence.*;

@Entity
@Table(name="departments")
public class Department  {

@Id
@GeneratedValue(strategy=GenerationType.AUTO)
@Column(name="DEPT_NO")
private Long id;

@Column(name="DEPT_NAME")
private String name;

public Department() {
}

public Long getId() {
    return id;
}

public void setId(Long id) {
    this.id = id;
}

public String getName() {
    return name;
}

public void setName(String name) {
    this.name = name;
}



}

控制器

@GetMapping("/departments/{id}")
public ResponseEntity<Department> getDepartmentById(@PathVariable(value = "id") Long departmentId) {
    Department department = departmentRepository.findOne(departmentId);
    if(department == null) {
        return ResponseEntity.notFound().build();
    } else {
        System.out.println("name is" + department.getName());
    }
    return ResponseEntity.ok().body(department);
}

不确定,虽然我有正确的 get set 方法,但这是什么原因造成的。

请帮忙。

【问题讨论】:

  • 当我从命令行给出 mvn clean install 时,我收到了以下警告。在我从特定位置删除 jar 并 mvn clean install 后,它开始工作。 [警告] 读取 C:\Users\Lenovo\.m2\repository\com\fasterxml\jackson\core\jackson-core\2.8.10\jackson-core-2.8.10.jar 时出错;无效的 LOC 标头(错误签名)[

标签: spring-mvc spring-boot


【解决方案1】:

您需要将 Jackson 依赖项添加到您的 pom.xml

<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-databind</artifactId>
    <version>2.5.0</version>
</dependency>

如果你没有为控制器使用@RestController注解,你需要在你的@GetMapping方法中添加@ResponseBody注解。

@ResponseBody
@GetMapping("/departments/{id}")

【讨论】:

  • jackson-databind-2.8.10.jar 在由 spring-boot maven 依赖添加的类路径中。控制器类使用 @RestContoller 注释
猜你喜欢
  • 1970-01-01
  • 2019-04-08
  • 1970-01-01
  • 2019-09-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-10-14
  • 2020-08-04
相关资源
最近更新 更多