【问题标题】:I can't find answer that Could not resolve view with name 'index' in servlet with name 'DispatcherServlet'我在名称为“DispatcherServlet”的 servlet 中找不到无法解析名称为“index”的视图的答案
【发布时间】:2014-05-27 22:28:25
【问题描述】:

我刚开始学习Spring MVC和tomcat。

我想通过 Spring 和 ThymeLeaf VewTemplate Engine 显示 html 页面。

但它不起作用。

在我的配置文件和控制器下面。

web.xml 文件

<servlet>
    <servlet-name>DispatcherServlet</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
</servlet>

<servlet-mapping>
    <servlet-name>DispatcherServlet</servlet-name>
    <url-pattern>/*</url-pattern>
</servlet-mapping>

<filter>
    <filter-name>EncodingFilter</filter-name>
    <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
    <init-param>
        <param-name>encoding</param-name>
        <param-value>UTF-8</param-value>
    </init-param>
</filter>
<filter-mapping>
    <filter-name>EncodingFilter</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>

/webapp/WEB-INF/DispatcherServlet-serlvet.xml

 <context:component-scan base-package="com.everblog.controller" />

<!-- ViewResolver be configured by thymeleaf -->
<bean id="templateResolver" class="org.thymeleaf.templateresolver.ServletContextTemplateResolver">
    <property name="prefix" value="/WEB-INF/view/" />
    <property name="suffix" value=".html" />
    <property name="templateMode" value="HTML5" />
    <property name="characterEncoding" value="UTF-8" />
</bean>

<bean id="templateEngine" class="org.thymeleaf.spring3.SpringTemplateEngine">
    <property name="templateResolver" ref="templateResolver" />
</bean>

<bean class="org.thymeleaf.spring3.view.ThymeleafViewResolver">
    <property name="templateEngine" ref="templateEngine" />
    <property name="order" value="1" />
    <property name="viewNames" value="*.html" />
</bean>

和控制器

@Controller
public class PostItemController {

   @RequestMapping(value="/hello", method = RequestMethod.GET)
   public String helloWorld() {
      System.out.println("IS IN");
      return "index";
   }
}

我在浏览器上输入 localhost:9000/hello,然后浏览器显示此错误消息。 HTTP 状态 500 - 无法解析名称为“DispatcherServlet”的 servlet 中名称为“index”的视图

输入异常报告

消息无法解析名称为 servlet 中名称为“索引”的视图 'DispatcherServlet'

描述服务器遇到了一个内部错误,导致它无法完成这个请求。

例外

javax.servlet.ServletException:无法解析带有名称的视图 名称为“DispatcherServlet”的 servlet 中的“索引” org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1190) org.springframework.web.servlet.DispatcherServlet.processDispatchResult(DispatcherServlet.java:992) org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:939) org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:856) org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:953) org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:844) javax.servlet.http.HttpServlet.service(HttpServlet.java:621) org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:829) javax.servlet.http.HttpServlet.service(HttpServlet.java:728) org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:88) org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) 注意 Apache 中提供了根本原因的完整堆栈跟踪 Tomcat/7.0.50 日志。

index.html 位于 /webapp/WEB-INF/view/

我该做什么配置了?

【问题讨论】:

标签: java spring tomcat spring-mvc servlets


【解决方案1】:

看看ThymeleafViewResolver#setViewNames(String[])的javadoc。它指出

指定一组名称模式,用于确定是否 控制器返回的视图名称将由此解析器解析 与否。

@Controller 处理程序方法返回的视图名称是

return "index";

那个视图名肯定不符合模式

*.html

你必须使用

return "index.html";

让 Spring 使用您的 ThymeleafViewResolver,但由于不存在此类已解析的 JSP,这将在稍后的步骤中失败。

相反,只需删除 viewNames &lt;property&gt; 或相应地修复它和您的 @Controller 方法。

【讨论】:

    【解决方案2】:

    用这段代码替换thymeleaf解析器中的最后一个bean,它会正常工作

    <beans:bean class="org.thymeleaf.spring3.view.ThymeleafViewResolver">
        <beans:property name="templateEngine" ref="templateEngine" />
    
    </beans:bean>
    

    【讨论】:

      猜你喜欢
      • 2018-12-20
      • 1970-01-01
      • 2016-12-27
      • 2015-08-06
      • 2018-12-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-07-11
      相关资源
      最近更新 更多