
[英]Thymeleaf view resolver and SpringMVC 3 InternalResourceViewResolver together
[英]Thymeleaf View Resolver with SpringMVC webapp
提示:本站为国内最大中英文翻译问答网站,提供中英文对照查看,鼠标放在中文字句上可显示英文原文。
如果可以使用ThymeleafViewResolver
作为默认视图解析器会怎么样。
目前我的WebMvcConfig
看起来像这样
@Configuration
@ComponentScan(basePackages="com.greatLearning.ticketAPI.controller")
public class WebMvcConfig implements WebMvcConfigurer {
@Autowired
ApplicationContext applicationContext;
// @Override
// public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) {
// configurer.enable();
// }
public InternalResourceViewResolver resolver() {
InternalResourceViewResolver resolver = new InternalResourceViewResolver();
resolver.setPrefix("/WEB-INF/views/");
resolver.setSuffix(".jsp");
return resolver;
}
//Thymeleaf ViewResolver
@Bean
public SpringResourceTemplateResolver templateResolver(){
// SpringResourceTemplateResolver automatically integrates with Spring's own
// resource resolution infrastructure, which is highly recommended.
SpringResourceTemplateResolver templateResolver = new SpringResourceTemplateResolver();
templateResolver.setApplicationContext(this.applicationContext);
templateResolver.setPrefix("/WEB-INF/views/");
templateResolver.setSuffix(".html");
// HTML is the default value, added here for the sake of clarity.
templateResolver.setTemplateMode(TemplateMode.HTML);
// Template cache is true by default. Set to false if you want
// templates to be automatically updated when modified.
templateResolver.setCacheable(true);
return templateResolver;
}
@Bean
public SpringTemplateEngine templateEngine(){
// SpringTemplateEngine automatically applies SpringStandardDialect and
// enables Spring's own MessageSource message resolution mechanisms.
SpringTemplateEngine templateEngine = new SpringTemplateEngine();
templateEngine.setTemplateResolver(templateResolver());
// Enabling the SpringEL compiler with Spring 4.2.4 or newer can
// speed up execution in most scenarios, but might be incompatible
// with specific cases when expressions in one template are reused
// across different data types, so this flag is "false" by default
// for safer backwards compatibility.
templateEngine.setEnableSpringELCompiler(true);
return templateEngine;
}
@Bean
public ThymeleafViewResolver viewResolver(){
ThymeleafViewResolver viewResolver = new ThymeleafViewResolver();
viewResolver.setTemplateEngine(templateEngine());
// NOTE 'order' and 'viewNames' are optional
viewResolver.setOrder(1);
viewResolver.setViewNames(new String[] {".html", ".xhtml"});
return viewResolver;
}
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry
.addResourceHandler("/resources/**")
.addResourceLocations("/resources/");
}
}
对于*.jsp
视图,它工作正常,但我想使用 Thymeleaf 来解析我的.html
模板,因为我不想使用*.jsp
。
需要注意的一件事是,在我的 controller
TestController.java
@RequestMapping("/hello")
public String method1() {
return "hello";
}
@RequestMapping("/hello2")
@ResponseBody
public String method2() {
return "hello"; //This works fine
}
当我点击/hello
api 这就是我得到的
我如何配置viewResolver
以便 spring 选择ThymeleafViewResolver
来解析html
而不是jsp
问题解决了!!!!! 这是我在WebMvcConfig.java
中调试库一个小时后所做的,我删除了public InternalResourceViewResolver resolver()
方法,因为它是 sed 以配置 jsp。现在在ThymeleafViewResolver viewResolver()
中删除这两个: viewResolver.setOrder(1);
viewResolver.setViewNames(new String[] {".html", ".xhtml"});
通过 debgging 和 [这篇文章](问题解决了!!!!!!这是我在WebMvcConfig.java
中调试库一个小时后所做的,我删除了public InternalResourceViewResolver resolver()
方法,因为它是 sed 来配置 jsp。现在在ThymeleafViewResolver viewResolver()
中删除这两个: viewResolver.setOrder(1);
viewResolver.setViewNames(new String[] {".html", ".xhtml"});
通过 debgging 和这篇文章得到了帮助。至于为什么我如果有人有兴趣会回答。:)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.