【问题标题】:Unable to resolve view using Thymeleaf in Spring mvc无法在 Spring mvc 中使用 Thymeleaf 解析视图
【发布时间】:2018-03-22 05:49:53
【问题描述】:

我在 Spring mvc 的视图部分中使用 Thymeleaf。但是在从浏览器发出请求时我无法获取视图页面。

请在下面找到 Thymeleaf 配置:

<bean id="templateResolver"
class="org.thymeleaf.spring4.templateresolver.SpringResourceTemplateResolver">
    <property name="prefix" value="/WEB-INF/templates/" />
    <property name="suffix" value=".html" />
    <property name="templateMode" value="HTML5" />
</bean>

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

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

我的控制器类定义如下:

@Controller
public class PersonController {

  @RequestMapping(value = "/home.html", method = RequestMethod.GET)
  public String navigateToPerson() {
    return "home";
  }
}

我有我的查看页面home.html 位于:\WEB-INF\templates\home.html 我已经检查了weblogic控制台中url的映射:

INFO: Mapped "{[/home.html],methods=[GET]}" onto public java.lang.String com.userapp.web.PersonController.navigateToPerson()

我的 web.xml 如下:

<servlet>
  <servlet-name>DispatcherServlet</servlet-name>
  <servlet-class>
     org.springframework.web.servlet.DispatcherServlet
  </servlet-class>
  <init-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>/WEB-INF/spring/applicationConfig/applicationConfig.xml</param-value>
  </init-param>
 </servlet>

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

现在当我向浏览器发出如下请求时: http://localhost:7040/UserApplication/home.html

我在 weblogic 控制台中收到以下错误:

Root cause of ServletException.
javax.servlet.ServletException: Could not resolve view with name 'home' in 
servlet with name 'DispatcherServlet'
at org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1266)
at org.springframework.web.servlet.DispatcherServlet.processDispatchResult(DispatcherServlet.java:1041)
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:984)
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:901)
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)
Truncated. see log file for complete stacktrace

【问题讨论】:

  • xml conf 看起来不错。只是参考这个。这可能会有所帮助hellokoding.com/…
  • 您是否尝试过删除注释中的 .html。映射是自动定义的。 @RequestMapping(value = "/home", method = RequestMethod.GET)
  • 试过但没用。此外,我不想将 DispatcherServlet url 模式从“*.html”更改为“/”

标签: java spring thymeleaf weblogic12c


【解决方案1】:

我最近遇到了同样的问题,我通过删除 viewNames

解决了这个问题

根据你的xml,你有

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

请移除 *viewNames** 属性

<bean id="thymeleafViewResolver" class="org.thymeleaf.spring4.view.ThymeleafViewResolver">
    <property name="templateEngine" ref="templateEngine" />
    <property name="order" value="1" />
</bean>

应该可以解决的。

依赖和版本

spring-webmvc ----> 5.2.1

thymeleaf-spring5 ----> 3.0.11

javax.servlet-api ----> 4.0.1

注意:同样适用于基于 Java 的配置,只需删除 setViewNames 配置(我实现此修复的代码库,使用基于 Java 的配置)...我是刚开始使用 Thymeleaf 以及为什么能够修复它,我真的不知道 (知道原因的任何人都应该发表评论)

希望对你有帮助

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-11-16
    • 1970-01-01
    • 2017-12-08
    • 1970-01-01
    • 2018-10-08
    • 2019-06-11
    • 2019-03-01
    • 2019-02-20
    相关资源
    最近更新 更多