2017-09-06 18 views
0

Spring Controllerを使用して単純なリストオブジェクトを返しています。私は自分のメソッドに@ResponseBodyで注釈を付けましたが、それでもarraylistから変換することはできません。私はjackson-mapper-asl jarも追加しました。Javaを使用してSpringコントローラからJSONオブジェクトを送信できません

コントローラの私のコードは、イム行方不明正確に何

@Controller 
@RequestMapping("/service/greeting") 
public class SpringServiceController { 


    @RequestMapping(value = "/customers", method = RequestMethod.GET) 
    public @ResponseBody List<Employee> getCustomers() { 
     EmployeeServiceImpl c = new EmployeeServiceImpl(); 
     return c.getCustomers(); 
    } 
} 

残り-servlet.xml

<beans xmlns="http://www.springframework.org/schema/beans" 
xmlns:context="http://www.springframework.org/schema/context" 
xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xmlns:p="http://www.springframework.org/schema/p" 
xsi:schemaLocation=" 
    http://www.springframework.org/schema/beans  
    http://www.springframework.org/schema/beans/spring-beans-4.0.xsd 
    http://www.springframework.org/schema/context 
    http://www.springframework.org/schema/context/spring-context-4.0.xsd 
    http://www.springframework.org/schema/mvc 
    http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd"> 
<context:component-scan base-package="com.biq.controller" /> 
<mvc:annotation-driven /> 

ログイン

java.lang.IllegalArgumentException: No converter found for return value of type: class java.util.ArrayList 
at org.springframework.web.servlet.mvc.method.annotation.AbstractMessageConverterMethodProcessor.writeWithMessageConverters(AbstractMessageConverterMethodProcessor.java:187) 
at org.springframework.web.servlet.mvc.method.annotation.RequestResponseBodyMethodProcessor.handleReturnValue(RequestResponseBodyMethodProcessor.java:174) 
at org.springframework.web.method.support.HandlerMethodReturnValueHandlerComposite.handleReturnValue(HandlerMethodReturnValueHandlerComposite.java:81) 
at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:113) 
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827) 
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738) 
at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85) 
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:967) 
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:901) 
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970) 
at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:861) 
at javax.servlet.http.HttpServlet.service(HttpServlet.java:624) 
at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846) 
at javax.servlet.http.HttpServlet.service(HttpServlet.java:731) 
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303) 
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) 
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) 
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) 
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) 
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:219) 
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:110) 
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:506) 
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:169) 
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103) 
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:962) 
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116) 
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:445) 
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1115) 
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:637) 
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:318) 
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) 
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) 
at java.lang.Thread.run(Thread.java:745) 

のですか?

+0

あなたは実際に何を得ますか? –

+1

'@Controller'の代わりに' @ RestController'を使用します – Andremoniy

+0

Maybee、ObjectMapperはSpring Beanとして存在しませんか?私は今あなたが持っているログについて不思議です。あなたはそれを提供できますか? –

答えて

0

最新のjson 2 jarを使用してみてください。 here は、あなたのクラスパスにjarファイルの下に持っている古いJSONと新しいJSON 2 libの間の差のためにこれを参照してください。

  1. ジャクソン注釈-2.7.5.jar
  2. ジャクソンコア-2.7.5.jar
  3. jackson-databind-2.7.5.jar

バージョンが異なる場合があります。あなたの問題を解決するはずです。 あなたはMavenを使用している場合は、

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

この依存関係は推移クラスパスにabovelibrariesを追加します。

+0

優れたサンガム。ありがとう、トン! –

+0

ようこそ。あなたの問題を解決して –

0

@Controllerの代わりに@RestControllerを使用してみてください。

Rest Controllerアノテーションは、http応答オブジェクトを暗黙的にjson/xmlに変換します。

+0

オブジェクトマッパークラスを登録してください。これを@componentで注釈をつけて、そのパッケージもスキャンしてください。 Springは自動的にBeanを作成し、使用します。 – Punit

0

オブジェクトマッパークラスを登録します。これを@componentで注釈をつけて、そのパッケージもスキャンしてください。 Springは自動的にBeanを作成し、使用します。

@Component 
public class CustomObjectMapper extends ObjectMapper { 


private static final long serialVersionUID = 1L; 
private static final Logger LOG = LoggerFactory.getLogger(CustomObjectMapper.class); 

public CustomObjectMapper() { 
    super(); 
    @SuppressWarnings("deprecation") 
    final AnnotationIntrospector introspector = new JaxbAnnotationIntrospector(); 
    this.setAnnotationIntrospector(introspector); 
} 
} 
関連する問題