2014-10-30 68 views
1

运行Web应用程序时获取javax.servlet.ServletException: Could not resolve view with name 'home' in servlet with name 'dispatcher'。对我来说@RequestMapping,瓷砖配置和映射看起来不错,但仍然出现错误。javax.servlet.ServletException:无法在名称为'dispatcher'的servlet中使用名称'home'解析视图

这里是WebAppInitializr.java

public class WebAppInitializer implements WebApplicationInitializer { 

    @Override 
    public void onStartup(ServletContext servletContext) throws ServletException { 

     AnnotationConfigWebApplicationContext rootContext = new AnnotationConfigWebApplicationContext(); 
     rootContext.register(RootConfig.class, MessageSourceConfig.class); 

     servletContext.addListener(new ContextLoaderListener(rootContext)); 

     AnnotationConfigWebApplicationContext dispatcherServlet = new AnnotationConfigWebApplicationContext(); 
     dispatcherServlet.register(WebMvcConfig.class); 

     ServletRegistration.Dynamic dispatcher = servletContext.addServlet("dispatcher", new DispatcherServlet(dispatcherServlet)); 
     dispatcher.setLoadOnStartup(1); 
     dispatcher.addMapping("/"); 
    } 

} 

而且一个WebAppConfig

@EnableWebMvc 
@ComponentScan(basePackages = { "com.examples" }) 
@Configuration 
public class WebMvcConfig extends WebMvcConfigurerAdapter { 

    private static final String TILES_VIEW_RESOLVER_DEFINITION = "/WEB-INF/tiles/tiles_configuration.xml"; 

    public void addResourceHandlers(ResourceHandlerRegistry registry) { 
     registry.addResourceHandler("/assets/**").addResourceLocations("/assets/").setCachePeriod(31556926); 
    } 

    @Override 
    public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) { 
     configurer.enable(); 
    } 

    @Bean 
    public TilesViewResolver tilesViewResolver() { 
     TilesViewResolver tilesViewResolver = new TilesViewResolver(); 
     tilesViewResolver.setOrder(2); 
     return tilesViewResolver; 
    } 

    @Bean 
    public UrlBasedViewResolver viewResolver() { 
     UrlBasedViewResolver viewResolver = new UrlBasedViewResolver(); 
     viewResolver.setViewClass(TilesView.class); 
     return viewResolver; 
    } 

    @Bean 
    public TilesConfigurer tilesConfigurer() { 
     TilesConfigurer tilesConfigurer = new TilesConfigurer(); 
     tilesConfigurer.setDefinitions(new String[] { TILES_VIEW_RESOLVER_DEFINITION }); 
     tilesConfigurer.setCheckRefresh(true); 
     return tilesConfigurer; 
    } 

} 

请求映射我有在控制器是: @RequestMapping(value = "/", method = RequestMethod.GET)

而瓦片定义:

<?xml version="1.0" encoding="ISO-8859-1" ?> 
<!DOCTYPE tiles-definitions PUBLIC 
     "-//Apache Software Foundation//DTD Tiles Configuration 3.0//EN" 
     "http://tiles.apache.org/dtds/tiles-config_3_0.dtd"> 

<tiles-definitions> 

    <definition name="defaultTemplate" template="/WEB-INF/views/templates/baseLayout.jsp"> 
     <put-attribute name="meta" value="/WEB-INF/views/templates/meta.jsp" /> 
     <put-attribute name="navbar" value="/WEB-INF/views/templates/navbar.jsp" /> 
     <put-attribute name="body" value="" /> 
     <put-attribute name="footer" value="/WEB-INF/views/templates/footer.jsp" /> 
    </definition> 

    <definition name="home" extends="defaultTemplate"> 
     <put-attribute name="title" value="Home" /> 
     <put-attribute name="body" value="/WEB-INF/views/home.jsp" /> 
    </definition> 

</tiles-definitions> 

任何帮助解决这个问题将不胜感激。

+0

雷霆嗨你<title>元素中的以下代码行,你能不能请您出示baseLayout.jsp页?我今天也面临这个错误并能够解决它。您需要通过以下方式在baseLayout.jsp中指定元,导航栏,正文和页脚,。如果你想使一些tile可选,那么你需要写 2015-05-10 13:30:30

+0

'<%@ include file =“/ WEB-INF/views/includes/taglibs.jsp “%> <瓦片:insertAttribute名称=” 元 “/> <瓦片:insertAttribute名称= “导航栏”/> <瓦片:insertAttribute名称= “体”/> <瓦片:insertAttribute名称= “页脚”/> '这是我的baseLayout.jsp的样子。 – Thunder 2015-05-13 21:08:50

+0

您需要在元素内添加此代码,如下所示,** <title><tiles:getAsString name =“title”/> ** – 2015-05-16 02:40:56

回答

0

在你的瓷砖定义文件中,你把title属性放在你的baseLayout.jsp文件中,但你没有放置它。您需要添加baseLayout.jsp文件

<title><tiles:getAsString name="title"/></title> 
相关问题