2016-07-27 3 views
1

РЕШИЛИ НА ЭТОГО ОТВЕТ Spring invokes wrong controller mapping Spring @Controllers URL-адрес всегда интерпретируется по отношению к пружинному Dispatcher Servlet, который обрабатывает их. Так что если вы карта диспетчера сервлета/API/ в web.xml, то URL к контроллеру выше/API/API/выбор404 Ошибка с REST конечной точки в SpringMVC для DispatcherServlet

Двойной строка сервиса/сервис/1234 работал.

ОРИГИНАЛЬНЫЙ ПОСТ

Доступ к конечной точке REST ресурс дает мне ошибку 404, хотя кажется, что все правильно определены:

Выход Вход:

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 Контроллер

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

Ожидаемый вызов: myapp/service/1234

попытался также следующие варианты: 1) Не определить класс RequestMapping, просто сделайте метод запроса Mapping

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

2) а также

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

Keep gett с 404 с журналом выше.

ответ

1

обновление ваш web.xml файл:

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

Да, к сожалению, мы смешали Struts/SpringMVC вызовы, поэтому мы не можем перенаправить все к MVC Dispatcher. Но вы правы, ссылки относительны, поэтому он не работает. Это было бы/service/service/1234. Я уточню свой ответ. –

+0

можете ли вы добавить свой файл конфигурации и журнал сопоставления во время запуска сервера? –

Смежные вопросы