gpt4 book ai didi

java - 使用 Spring Boot 和注释配置 ViewResolver 给出 No mapping found for HTTP request with URI error

转载 作者:IT老高 更新时间:2023-10-28 13:45:01 26 4
gpt4 key购买 nike

我正在尝试使用 gradle、spring boot 和 spring mvc 以及最简单的 View 解析器和 html 来制作“hello world”应用程序。

我从 thymeleaf spring boot example 开始我只是想删除 thymeleaf 以使用纯 html 和 InternalResourceViewResolver 制作更简单的 mvc 应用程序。我有一个要服务的 greeting.html,它位于 src/main/webapp/WEB-INF。当我运行应用程序时,我得到了

No mapping found for HTTP request with URI [/WEB-INF/greeting.html] in DispatcherServlet with name 'dispatcherServlet'

这是一个常见错误,网上有很多答案,但似乎没有任何帮助。

这是我的 Application.java

@SpringBootApplication
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}

这是我的 GreetingController.java

@Controller
public class GreetingController {
@RequestMapping("/greeting")
public String greeting() {
return "greeting";
}
}

这是我的 MvcConfiguration.java

@Configuration
@EnableWebMvc
public class MvcConfiguration extends WebMvcConfigurerAdapter{
@Bean
public ViewResolver getViewResolver() {
InternalResourceViewResolver resolver = new InternalResourceViewResolver();
resolver.setPrefix("/WEB-INF/");
resolver.setSuffix(".html");
return resolver;
}
}

我用 gradle bootRun

运行它

这里是代码库:https://github.com/driver-pete/spring-mvc-example

这里还有一些线索:

  • Thymeleaf View 解析工作正常
  • InternalResourceViewResolver 解析到正确的路径
  • WEB-INF 和 greeting.html 似乎存在于 war 文件中
  • 我没有 jsp 或 jSTL,所以我不会像有些人建议的那样错过那些 jars

我的假设是调度程序 servlet 以某种方式被配置为在/* 而不是/上服务,例如 here和无处不在。但是我没有 web.xml 所以这些建议在这里不适用。我看到很多示例如何以编程方式配置调度程序 servlet,但我想将我的应用程序保持在最低限度,我怀疑 spring boot 应该可以配置它,因为它与 thymeleaf 配合得很好。

最佳答案

您只需要启用默认的 servlet,只需在 MvcConfiguration 中添加以下内容即可:

@Configuration
@EnableWebMvc
public class MvcConfiguration extends WebMvcConfigurerAdapter{
@Bean
public ViewResolver getViewResolver() {
InternalResourceViewResolver resolver = new InternalResourceViewResolver();
resolver.setPrefix("/WEB-INF/");
resolver.setSuffix(".html");
return resolver;
}

@Override
public void configureDefaultServletHandling(
DefaultServletHandlerConfigurer configurer) {
configurer.enable();
}
}

基本上发生的事情是 Spring 不知道如何本地处理此类内容的处理(可能是一个 jsp 说),并且这种配置是告诉它将其委托(delegate)给容器的方式。

关于java - 使用 Spring Boot 和注释配置 ViewResolver 给出 No mapping found for HTTP request with URI error,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29953245/

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