【问题标题】:Spring MVC Mapping problemSpring MVC 映射问题
【发布时间】:2010-01-11 22:22:30
【问题描述】:

我有一个我认为是简单的 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);
}
}

【问题讨论】:

    标签: java spring spring-mvc


    【解决方案1】:

    您不应在 @RequestMapping&lt;url-pattern&gt; 中重复“/app”。也就是说,您的sayHello 现在映射到“/app/app/index”。你可以写

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

    (或者您可以在配置中声明 DefaultAnnotationHandlerMapping bean 并将其 allwaysUseFullPath 属性设置为 true 以覆盖默认行为)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-09-14
      • 1970-01-01
      • 1970-01-01
      • 2011-12-24
      • 2012-06-21
      • 1970-01-01
      • 1970-01-01
      • 2011-01-18
      相关资源
      最近更新 更多