Bil*_*l L 6 spring spring-mvc spring-boot
我不知道我们在这里做错了什么。我正在尝试建立一个单页Spring MVC项目,以便我研究一下。我greeting.html正在尝试加载一个屏幕。这是我的控制器类来加载它:
@Controller
public class GreetingController {
@GetMapping("/greeting")
public String getGreeeting(@RequestParam(name="name", required=false, defaultValue="World") String name, Model model) {
model.addAttribute("name", name);
return "greeting";
}
}
Run Code Online (Sandbox Code Playgroud)
当这工作得很好greeting.html是/resources/templates/greeeting.html。但是,我想要在WEB-INF文件夹后面。我试过将它放在WEB-INF/views/greeting.html和中webapp/WEB-INF/views/greeting.html。然后,我尝试使用InternalResourceViewResolver网上阅读的:
@Bean
public InternalResourceViewResolver viewResolver() {
InternalResourceViewResolver viewResolver = new InternalResourceViewResolver();
viewResolver.setPrefix("/WEB-INF/views/");
viewResolver.setSuffix(".html");
return viewResolver;
}
Run Code Online (Sandbox Code Playgroud)
以我的理解,这应该可以让它找到greeting.html我的WEB-INF文件夹设置之一。但是,当我转到时localhost:8080/greeting,在控制台中会收到404和以下消息:
WARN 1439 --- [nio-8080-exec-1] o.s.w.s.r.ResourceHttpRequestHandler : Path with "WEB-INF" or "META-INF": [WEB-INF/views/greeting.html]
我完全不知道发生了什么或如何修复它,每个在线教程都可以做到这一点,也没有问题,我似乎找不到任何人遇到同样的问题。任何指导都将对您有所帮助。
您好,据我从您的问题中了解到您正在使用 spring boot 默认情况下 spring boot 搜索 src/main/resources/templates 文件夹 如果您使用了一些依赖项,例如:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
Run Code Online (Sandbox Code Playgroud)
这将默认启用百里香。
要覆盖你的 ViewResolver 你需要
在 Spring Boot 中,您可以在 application.properties 文件中进行此类配置:
spring.mvc.view.prefix=/WEB-INF/views/
spring.mvc.view.suffix=.html
Run Code Online (Sandbox Code Playgroud)
或者您可以使用 java config 编写自定义解析器配置:
@Configuration
@EnableWebMvc
@ComponentScan
public class MvcConfiguration extends WebMvcConfigurerAdapter
{
@Override
public void configureViewResolvers(ViewResolverRegistry registry) {
InternalResourceViewResolver resolver = new InternalResourceViewResolver();
resolver.setPrefix("/WEB-INF/views/");
resolver.setSuffix(".html");
registry.viewResolver(resolver);
}
@Override
public void configureDefaultServletHandling(
DefaultServletHandlerConfigurer configurer) {
configurer.enable();
}
}
Run Code Online (Sandbox Code Playgroud)
我认为这很有帮助
| 归档时间: |
|
| 查看次数: |
3573 次 |
| 最近记录: |