Java 无法在Spring mvc中使用Thymeleaf解析视图

Java 无法在Spring mvc中使用Thymeleaf解析视图,java,spring,thymeleaf,weblogic12c,Java,Spring,Thymeleaf,Weblogic12c,我在Spring mvc的视图部分使用了Thymeleaf。但在从浏览器发出请求时,我无法获取视图页面 请查找以下配置: <bean id="templateResolver" class="org.thymeleaf.spring4.templateresolver.SpringResourceTemplateResolver"> <property name="prefix" value="/WEB-INF/templates/" /> <pro

我在Spring mvc的视图部分使用了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>
我有我的查看页面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()
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
我的web.xml如下所示:

@Controller
public class PersonController {

  @RequestMapping(value = "/home.html", method = RequestMethod.GET)
  public String navigateToPerson() {
    return "home";
  }
}
<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>

我最近遇到了同样的问题,我通过删除视图名解决了这个问题

根据您的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 config my代码库,使用基于Java的配置。。。我刚开始使用Thymeleaf,为什么它能够修复它,我真的不知道谁知道为什么,请留下评论


希望这能有所帮助

XMLconf看起来不错。只要看看这个。如果您尝试删除批注中的.html,可能会有所帮助。映射是自动定义的@RequestMappingvalue=/home,method=RequestMethod.GETtried但不起作用。此外,我不想将DispatcherServlet url模式更改为/从*.html