[英]javax.servlet.ServletException: Could not resolve view with name 'home' in servlet with name 'dispatcher'
Getting javax.servlet.ServletException: Could not resolve view with name 'home' in servlet with name 'dispatcher'
when running a web app. 获取javax.servlet.ServletException: Could not resolve view with name 'home' in servlet with name 'dispatcher'
运行Web应用程序时, javax.servlet.ServletException: Could not resolve view with name 'home' in servlet with name 'dispatcher'
。 To me the @RequestMapping
, tiles configuration and mapping looks good but still getting an error. 对我来说,@ @RequestMapping
, @RequestMapping
贴配置和映射看起来不错,但仍然出现错误。
Here is the WebAppInitializr.java 这是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("/");
}
}
And the WebAppConfig 还有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;
}
}
The request mapping i have in the controller is: @RequestMapping(value = "/", method = RequestMethod.GET)
我在控制器中的请求映射为: @RequestMapping(value = "/", method = RequestMethod.GET)
And the tiles definition: 和磁贴的定义:
<?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>
Any help resolving this issue would be highly appreciated. 解决此问题的任何帮助将不胜感激。
In your tile definition file you put the title
attribute but in the your baseLayout.jsp file you didn't placed it. 在磁贴定义文件中,您放置了title
属性,但在baseLayout.jsp文件中却未放置它。 You need to add the following line of code inside your <title>
element of the baseLayout.jsp file 您需要在baseLayout.jsp文件的<title>
元素内添加以下代码行
<title><tiles:getAsString name="title"/></title>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.