2016-07-27 19 views
1

PER DIESER ANTWORT RESOLVED Spring invokes wrong controller mapping Frühling @Controllers URLs sind immer relativ zu dem die Feder Dispatcher Servlet interpretiert, die sie verarbeitet. Also, wenn Sie den Dispatcher Servlet/api/ in web.xml Karte dann die URL zu Ihrem Controller oben ist/api/api/Wahl404 Fehler von REST-Endpunkt in SpringMVC für DispatcherServlet

Der Doppel-String Service/Service/1234 arbeitet.

ORIGINAL POST

eine REST-Ressource Endpunkt Zugriff gibt mir einen 404-Fehler, obwohl alles richtig definiert zu sein scheint:

Protokollausgabe:

DEBUG DispatcherServlet with name 'mvc-dispatcher' processing GET request for [/myapp/service/1234] 
DEBUG Looking up handler method for path /1234 
DEBUG Did not find handler method for [/1234] 
WARN No mapping found for HTTP request with URI [/myapp/service/1234] in DispatcherServlet with name 'mvc-dispatcher' 

web.xml

<servlet> 
     <servlet-name>mvc-dispatcher</servlet-name> 
     <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 
     <init-param> 
      <param-name>contextClass</param-name> 
      <param-value>org.springframework.web.context.support.AnnotationConfigWebApplicationContext</param-value> 
     </init-param> 
     <load-on-startup>1</load-on-startup> 
    </servlet> 

    <servlet-mapping> 
     <servlet-name>mvc-dispatcher</servlet-name> 
     <url-pattern>/service/*</url-pattern> 
    </servlet-mapping> 

SpringMVC-Controller

@RestController 
@RequestMapping("/service") 
public class RESTController { 
    @RequestMapping(value="/{id}", method=RequestMethod.GET) 
    public String getResult (@PathVariable String id) 
    { 
    //... get JSON result 
    } 
} 

Expected Aufruf: myapp/service/1234

versucht, auch diese Optionen: 1) Verwenden Sie keine Klasse RequestMapping definieren, gehen Sie nur eine Methode anfordern Mapping

@RequestMapping("/service/{id}") 

2) als sowie

@RequestMapping("/service*/{id}") 
@RequestMapping("/service**/{id}") 

Keep gett Ein 404 mit dem obigen Protokoll.

Antwort

1

Update Ihre web.xml-Datei:

<servlet-mapping> 
    <servlet-name>mvc-dispatcher</servlet-name> 
    <url-pattern>/*</url-pattern> 
</servlet-mapping> 
+0

Ja leider haben wir gemischt Struts/SpringMVC ruft so können wir nicht alles zu MVC Dispatcher umleiten. Aber du hast Recht, die Referenzen sind relativ, deshalb hat es nicht funktioniert. Es wäre/service/service/1234 gewesen. Ich werde meine Antwort aktualisieren. –

+0

können Sie bitte Ihre Konfigurationsdatei und das Mapping-Protokoll während des Serverstarts hinzufügen? –