Mayank Aggarwal
Mayank Aggarwal

Reputation: 61

Failed to write HTTP message: org.springframework.http.converter.HttpMessageNotWritableException: No converter found for return value of type:

I am trying to expose REST service, but while hitting it from POSTMAN i am getting below :

WARNING: Failed to write HTTP message: org.springframework.http.converter.HttpMessageNotWritableException: No converter found for return value of type: class java.util.ArrayList

Where as i have also included below jar files which are required :

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

Here is my REST controller Code :

@RestController
@RequestMapping("/MayankAPI")
public class TestRestAPI {
@RequestMapping(value="/sayHello" , method = RequestMethod.POST)
public TestPojo postData(@RequestBody String payload) {
  System.out.println("Hello post"+payload);
  TestPojo payload1=new TestPojo();
  payload1.setStudentName("Jack");
  return payload1;
}
@RequestMapping(value="/sayHello" , method = RequestMethod.GET)
public List<TestPojo> getData(String payload) {
  System.out.println("Hello get"+payload);
  List<TestPojo> payload1=new ArrayList<TestPojo>();
  TestPojo tp = new TestPojo();
  tp.setStudentName("Jack");
  payload1.add(tp);
  return payload1;
}

Here is my bean which i am trying to return :

public class TestPojo {

  private String studentName;
  private String studentId;

  public String getStudentName() {
    return studentName;
  }

  public void setStudentName(String studentName) {
    this.studentName = studentName;
  }

  public String getStudentId() {
    return studentId;
  }

  public void setStudentId(String studentId) {
    this.studentId = studentId;
  }
}

Please help me where i am doing wrong.

Upvotes: 3

Views: 4892

Answers (2)

amoljdv06
amoljdv06

Reputation: 2884

I know it too late but still Alternate Solution: you need to enable Spring project as Web MVC as follow:

@Configuration @EnableWebMvc @ComponentScan("basePackages = com.test") public class MiBenefitConfiguration { }

Upvotes: 4

Mayank Aggarwal
Mayank Aggarwal

Reputation: 61

This is happening because MappingJackson2HttpMessageConverter is not registered in my App config file as below.

@Configuration
@ComponentScan("basePackages = com.test")
public class MiBenefitConfiguration extends WebMvcConfigurationSupport{

  @Bean
  public ObjectMapper getObjectMapper() {
    return new ObjectMapper();
  }

  @Bean
  public MappingJackson2HttpMessageConverter messageConverter() {
    MappingJackson2HttpMessageConverter converter = new MappingJackson2HttpMessageConverter();
    converter.setObjectMapper(getObjectMapper());
    return converter;
  }

  @Override
  public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
    converters.add(messageConverter());
    addDefaultHttpMessageConverters(converters);
  }
}

Upvotes: 3

Related Questions