2010-01-11 2 views
4

У меня есть то, что я считал простым приложением Spring MVC. Тем не менее, я могу настроить параметры requestMappings правильно. Странно, что в журналах показано, что URL-адрес сопоставлен с правильным контроллером, но, по-видимому, он не находит его во время выполнения. Любые предложения были бы оценены:Проблема с картированием Spring MVC

Вход

INFO: Mapped URL path [/app/index] onto handler  [[email protected]] 
Jan 11, 2010 2:14:21 PM org.springframework.web.servlet.handler.AbstractUrlHandlerMapping registerHandler 
INFO: Mapped URL path [/app/index.*] onto handler [[email protected]] 
Jan 11, 2010 2:14:21 PM org.springframework.web.servlet.handler.AbstractUrlHandlerMapping registerHandler 
INFO: Mapped URL path [/app/index/] onto handler [[email protected]] 
Jan 11, 2010 2:14:21 PM org.springframework.web.servlet.handler.AbstractUrlHandlerMapping registerHandler 
INFO: Mapped URL path [/app/tags/{tag}] onto handler [[email protected]] 
Jan 11, 2010 2:14:21 PM org.springframework.web.servlet.handler.AbstractUrlHandlerMapping registerHandler 
INFO: Mapped URL path [/app/tags/{tag}.*] onto handler [[email protected]] 
Jan 11, 2010 2:14:21 PM org.springframework.web.servlet.handler.AbstractUrlHandlerMapping registerHandler 
INFO: Mapped URL path [/app/tags/{tag}/] onto handler [[email protected]] 
Jan 11, 2010 2:14:21 PM org.springframework.web.servlet.FrameworkServlet initServletBean 
INFO: FrameworkServlet 'wisi': initialization completed in 237 ms 
Jan 11, 2010 2:14:21 PM org.apache.catalina.core.StandardContext start 
INFO: Container org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/] has already been started 
Jan 11, 2010 2:14:41 PM org.springframework.web.servlet.DispatcherServlet noHandlerFound 
WARNING: No mapping found for HTTP request with URI [/app/index] in DispatcherServlet with name 'wisi' 

web.xml файл класса

<listener> 
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> 
</listener> 

<!-- The Spring MVC framework handles all of this stuff. Just pass it along --> 
<servlet> 
    <servlet-name>wisi</servlet-name> 
    <servlet-class>org.springframework.web.servlet.DispatcherServlet </servlet-class> 
    <load-on-startup>1</load-on-startup> 
</servlet> 

<servlet-mapping> 
    <servlet-name>wisi</servlet-name> 
    <url-pattern>/app/*</url-pattern> 
</servlet-mapping> 

Контроллер:

@Controller 
public class MainController { 

@Autowired 
private LearningEntryService learningEntryService; 

public LearningEntryService getLearningEntryService() { 
    return learningEntryService; 
} 

public void setLearningEntryService(LearningEntryService learningEntryService) { 
    this.learningEntryService = learningEntryService; 
} 

@RequestMapping(value = "/app/index", method = RequestMethod.GET) 
public ModelAndView sayHello(HttpServletRequest request, 
     HttpServletResponse response) throws ServletException, IOException { 

    Map<String, Object> model = new HashMap<String, Object>(); 
    List<LearningEntry> le = learningEntryService.getLearningEntries(); 
    model.put("learningEntries", le); 
    return new ModelAndView("main", model); 
} 
} 

ответ

16

Вы не должны дублировать "/ приложение" в оба @RequestMapping и <url-pattern>. То есть, ваш sayHello теперь отображается на «/ app/app/index». Вы можете написать

@RequestMapping(value = "/index", method = RequestMethod.GET) 

(Или вы можете объявить DefaultAnnotationHandlerMapping боб в вашей конфигурации и установите его свойство allwaysUseFullPath в true переопределить поведение по умолчанию)

+1

+1 хороший улов, я не заметил, что – skaffman

+0

совершенны, это исправил это, спасибо –

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