gpt4 book ai didi

java - 无法在 Spring mvc 中使用 Thymeleaf 解析 View

转载 作者:行者123 更新时间:2023-12-02 11:28:50 24 4
gpt4 key购买 nike

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

请查看以下 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 类定义如下:

@Controller
public class PersonController {

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

我的 View 页面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

最佳答案

我最近遇到了同样的问题,我通过删除 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,为什么它能够解决这个问题,我真的不知道(任何知道原因的人,请留下评论)

希望这对您有所帮助

关于java - 无法在 Spring mvc 中使用 Thymeleaf 解析 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49421435/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com