我认为这是一个简单的Spring MVC应用程序。但是,我似乎可以正确设置requestMappings。奇怪的是,日志显示url被映射到适当的控制器,但Dispatcher似乎无法在运行时找到它。任何建议将不胜感激:
日志
INFO: Mapped URL path [/app/index] onto handler [com.noisyair.whatisayis.web.MainController@420a52f]
Jan 11, 2010 2:14:21 PM org.springframework.web.servlet.handler.AbstractUrlHandlerMapping registerHandler
INFO: Mapped URL path [/app/index.*] onto handler [com.noisyair.whatisayis.web.MainController@420a52f]
Jan 11, 2010 2:14:21 PM org.springframework.web.servlet.handler.AbstractUrlHandlerMapping registerHandler
INFO: Mapped URL path [/app/index/] onto handler [com.noisyair.whatisayis.web.MainController@420a52f]
Jan 11, 2010 2:14:21 PM org.springframework.web.servlet.handler.AbstractUrlHandlerMapping registerHandler
INFO: Mapped URL path [/app/tags/{tag}] onto handler [com.noisyair.whatisayis.web.SearchByTagController@7b3cb2c6]
Jan 11, 2010 2:14:21 PM org.springframework.web.servlet.handler.AbstractUrlHandlerMapping registerHandler
INFO: Mapped URL path [/app/tags/{tag}.*] onto handler [com.noisyair.whatisayis.web.SearchByTagController@7b3cb2c6]
Jan 11, 2010 2:14:21 PM org.springframework.web.servlet.handler.AbstractUrlHandlerMapping registerHandler
INFO: Mapped URL path [/app/tags/{tag}/] onto handler [com.noisyair.whatisayis.web.SearchByTagController@7b3cb2c6]
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);
}
}
答案 0 :(得分:16)
您不应在@RequestMapping
和<url-pattern>
中复制“/ app”。也就是说,您的sayHello
现在已映射到“/ app / app / index”。你可以写
@RequestMapping(value = "/index", method = RequestMethod.GET)
(或者您可以在配置中声明DefaultAnnotationHandlerMapping
bean并将其allwaysUseFullPath
属性设置为true
以覆盖默认行为)