SpringMVC restful異常Could not write request:no suitable HttpMessageConverter found for request type


Exception in thread "main"org.springframework.web.client.RestClientException: Could not write request: no suitable HttpMessageConverter found for request type [com.jersey.test.entity.Student]
at org.springframework.web.client.RestTemplate$HttpEntityRequestCallback.doWithRequest(RestTemplate.java:597)
at org.springframework.web.client.RestTemplate.doExecute(RestTemplate.java:436)
at org.springframework.web.client.RestTemplate.execute(RestTemplate.java:401)
at org.springframework.web.client.RestTemplate.postForObject(RestTemplate.java:279)
at com.jersey.test.RestClient.addStudent(RestClient.java:47)
at com.jersey.test.RestClient.main(RestClient.java:75)
SpringMVCコントロールは以下の通りである.
@RequestMapping(value="/static/restful") @Controller public class StudentRestfulController { private IBaseService studentService; @RequestMapping(value="/addStudent",method=RequestMethod.POST) public void addStudent(@RequestBody Student entity){//this.studentService.save(entity);
System.out.println("firstname :"+entity.getFirstname()+"lastname "+entity.getLastname()); } @RequestMapping(value="/batchAddStudent",method=RequestMethod.POST) public void batchAddStudent(@RequestBody List students){ if(students!=null&&students.size()>0){ for(Student student:students){ this.studentService.save(student); } } } }
エンティティ:
public class Student { private String workUnit = null;  private String id = null;  private String loginname = null;  private String password = null;  private String lastname = null;
}
クライアント呼び出しコード:
public class RestClient { private RestTemplate template; private final static String url = "http://localhost:8080/rdb/static/restful/";
         public void addStudent(Student stu){   template=new RestTemplate();   template.postForObject(url+"addStudent.do", stu, String.class);         }
}
解決方法:
一、実体クラスに@XmlRootElement注釈を加えるとSpringMVCが解析できる
二、クライアントで呼び出されたコードを修正する
RestTemplateテンプレートにメッセージ変換器を追加するには、2つの方法があります.
1.コードに直接追加
  public void addStudent(Student stu){   template=new RestTemplate();   List messageConverters=new ArrayList();   messageConverters.add(new SourceHttpMessageConverter());   messageConverters.add(new FormHttpMessageConverter());   messageConverters.add(new MappingJacksonHttpMessageConverter());   template.setMessageConverters(messageConverters);   template.postForObject(url+"addStudent.do", stu, String.class);    }
2.クライアントXMLプロファイルに変換器を追加する
<bean id="restTemplate" class="org.springframework.web.client.RestTemplate">
		    <property name="messageConverters">
		        <list>
		            <bean class="org.springframework.http.converter.xml.SourceHttpMessageConverter"/>
		            <bean class="org.springframework.http.converter.FormHttpMessageConverter"/>
		            <bean class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter"/>
		        </list>
		    </property>
		</bean>
 
   public void testRest(Student stu){
	   BeanFactory bean=new ClassPathXmlApplicationContext("applicationContext.xml");
	   template=(RestTemplate)bean.getBean("restTemplate");
	   template.postForObject(url+"addStudent.do", stu, String.class);
   }