2017-04-17 3 views
0

Ich arbeite an dem Projekt, das Spring 4.3.2.Release und Hibernate 5.2.9.Final Versionen verwendet. Es ist ein Spring + Hibernate + Restful-Service-Beispiel.Wie zu überwinden kein Konverter gefunden Fehler

Während die Demo zu tun ich den Fehler habe: Nein Converter gefunden:

Im Folgenden sind die Anmeldeinformationen meines Codes.

servlet.xml

<?xml version="1.0" encoding="UTF-8"?> 
<beans xmlns="http://www.springframework.org/schema/beans" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xmlns:context="http://www.springframework.org/schema/context" 
    xmlns:jdbc="http://www.springframework.org/schema/jdbc" 
    xmlns:mvc="http://www.springframework.org/schema/mvc" 
    xmlns:tx="http://www.springframework.org/schema/tx" 
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd 
     http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.3.xsd 
     http://www.springframework.org/schema/jdbc http://www.springframework.org/schema/jdbc/spring-jdbc-4.3.xsd 
     http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.3.xsd 
     http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.3.xsd"> 

    <mvc:annotation-driven/> 
    <mvc:default-servlet-handler/> 
    <context:annotation-config/> 
    <context:component-scan base-package="practice.ngresource.tryone.controller.**"></context:component-scan> 

    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> 
     <property name="prefix" value="/views/"></property> 
     <property name="suffix" value=".html"></property> 
    </bean> 

</beans> 

Dies ist Ruhe-Controller.

import org.springframework.web.bind.annotation.RestController; 

import practice.ngresource.tryone.model.Task; 


@RestController 
@RequestMapping("/trialone") 
public class TrialController { 

    @ResponseStatus(HttpStatus.OK) 
    @RequestMapping(value="/trial",method=RequestMethod.GET) 
    public List<Task> taskList(){ 
     System.out.println("inside the gettasklist"); 
     List<Task> list = new ArrayList<>(); 
     list.add(new Task("one","oneDesc","completed")); 
     list.add(new Task("Two","twoDesc","completed")); 
     list.add(new Task("Three","threeDesc","pending")); 
     list.add(new Task("four","fourDesc","pending")); 
     list.add(new Task("five","fiveDesc","completed")); 
     return list; 
    } 

} 

Ansicht und entsprechen JS Seite lautet:

<!DOCTYPE html> 
<html> 
<head> 
<meta charset="ISO-8859-1"> 
<title>Insert title here</title> 
</head> 
<body ng-app="trial1App" ng-controller="trialController as tCont"> 
     <h1>The Task List is as follow</h1> 
     <div> 
      <table> 
       <tr ng-repeat="data in tCont.tasks"> 
        <td>{{data.taskName}}</td> 
       </tr> 
      </table> 

     </div> 

     <script type="text/javascript" 
     src="https://ajax.googleapis.com/ajax/libs/angularjs/1.4.9/angular.min.js"></script> 
     <script type="text/javascript" 
     src="https://ajax.googleapis.com/ajax/libs/angularjs/1.4.9/angular-resource.min.js"></script> 
     <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script> 
     <script> 



      var trialApp = angular.module('trial1App', ['ngResource']); 

      trialApp.factory('Task',['$resource',function($resource){ 
        return $resource('http://localhost:8080/NgRes_Prac_001/trialone/trial/:trialId', 
          {trialId:'@tId'}, 
          { 
           updateTask : {method : 'PUT'} 
          }); 
       }]); 

      trialApp.controller('trialController', ['$scope','Task',function($scope,Task){ 
        var ob = this; 
        ob.tasks = []; 
        ob.fetchAllTasks = function(){ 
          console.log("Inside Fetch all list");       
          ob.tasks = Task.query(); 
          console.log("Fetch List Completed"); 
         }; 

        ob.fetchAllTasks(); 
       }]); 



     </script> 
</body> 
</html> 

Und folgende ist mein Fehler-Status.

Apr 17, 2017 1:43:24 PM org.apache.catalina.core.StandardWrapperValve invoke 
SEVERE: Servlet.service() for servlet [ngRs001] in context with path [/NgRes_Prac_001] threw exception [Request processing failed; nested exception is java.lang.IllegalArgumentException: No converter found for return value of type: class java.util.ArrayList] with root cause 
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:188) 
    at org.springframework.web.servlet.mvc.method.annotation.RequestResponseBodyMethodProcessor.handleReturnValue(RequestResponseBodyMethodProcessor.java:173) 
    at org.springframework.web.method.support.HandlerMethodReturnValueHandlerComposite.handleReturnValue(HandlerMethodReturnValueHandlerComposite.java:81) 
    at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:130) 
    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:963) 
    at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:897) 
    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:622) 
    at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:729) 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:292) 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207) 
    at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240) 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207) 
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:212) 
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:106) 
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502) 
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:141) 
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79) 
    at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:616) 
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88) 
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:528) 
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1099) 
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:670) 
    at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1520) 
    at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1476) 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) 
    at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) 
    at java.lang.Thread.run(Unknown Source) 

Bitte helfen Sie mir dies durch. Vielen Dank im Voraus.

+0

Haben Sie Jackson zu Ihrer Abhängigkeiten/Classpath hinzugefügt? –

+0

@JB Nizet - Danke Mann. Das ist der dumme Fehler .. Danke für die Rettung meines Lebens .. –

Antwort

0

Normalerweise, wenn Sie einen Fehler bei der Konvertierung sehen (wie bei Ihnen), wird er durch inkompatible Datentypen verursacht.

Ein kurzer Blick auf der Fehlermeldung macht es aussehen wie

List<Task> list = new ArrayList<>(); 

die Schuldige sind. Liste und ArrayList scheinen inkompatible Typen zu sein. Dies könnte bedeuten, dass Typcasting notwendig ist, oder vielleicht sollten Sie versuchen, einen anderen Typ von "Liste" zu erstellen.

--Edit-- Eine andere Möglichkeit sind fehlende Abhängigkeiten. Stellen Sie sicher, dass im Projekt auf alles ordnungsgemäß verwiesen wird.

Hope this zumindest etwas nützlich ist,
-Joseph

+0

Danke für die Antwort Ich habe keine Gläser zu Classpath –

+0

@ VijayKarchi dann warum akzeptieren Sie diese Antwort, die nichts mit dem eigentlichen Grund der Ausnahme zu tun hat? –

+0

Ahh, okay gut zu wissen. Ich muss mein Repertoire aktualisieren! Viel Glück mit Ihrem Projekt. –

0

Wenn Sie @RestController auf Ihrem Controller haben, dass, um genug sein, um sollte Ihre Daten zu JSON String jedoch zu konvertieren, sah ich es auf und es scheint, dass Sie Getter \ Setter in Ihrer Task-Klasse fehlen.

nach:

How to return JSON data from spring Controller using @ResponseBody

und:

java.lang.IllegalArgumentException: No converter found for return value of type

+0

Danke für die Antwort .. Der Fehler war, dass ich Jackson Gläser zu meinem Klassenpfad nicht aufgenommen habe. –

Verwandte Themen