无法正确解析FreeMarker视图
在使用SpringMVC处理FreeMarker的时候,出现了无法解析视图名的问题,报的异常说明的也非常清楚就是不能解析视图

这个free就是一个FreeMarker的模板名,它的完整路径是/WEB-INF/freemarker/free.ftl
既然是不能正确解析视图,那么一定是因为SpringMVC的视图解析器没有配置正确,先来看看配置的视图解析器:
@Override
public void configureViewResolvers(ViewResolverRegistry registry) {
UrlBasedViewResolverRegistration freeMarker = registry.freeMarker();
freeMarker.prefix("/WEB-INF/freemarker/");
freeMarker.suffix(".ftl");
}
因为我的SpringMVC配置是通过继承WebMvcConfigurerAdapter实现的Java配置,所以就重写了其的configureViewResolvers方法,这个方法名通俗易懂,是配置视图解析器的简写方法。其实有使用SpringMVC处理过FreeMarker的同学应该就看到错误了,我自以为是的去配置前后缀(后缀还好,特别是前缀)。
想要配置FreeMarker其实还需要配置FreeMarkerConfigurer:
@Bean
public FreeMarkerConfigurer freeMarkerConfigurer() {
FreeMarkerConfigurer freeMarkerConfigurer = new FreeMarkerConfigurer();
freeMarkerConfigurer.setTemplateLoaderPath("/WEB-INF/freemarker/");
return freeMarkerConfigurer;
}
如果使用XML就这样配置:
<bean id="freemarkerConfig" class="org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer">
<property name="templateLoaderPath"><value>/WEB-INF/freemarker/</value></property>
</bean>
这是因为我们在这里配置了templateLoaderPath,所以就不需要再配置前缀了,而且这个templateLoaderPath属于必须的配置属性。
那么,就再修改一下ViewResolver:
@Override
public void configureViewResolvers(ViewResolverRegistry registry) {
registry.freeMarker();
}
其实看ViewResolverRegistry的方法调用也可以看出端倪,在调用jsp方法的时候有一个可以指定前后缀的重载方法,但是freeMarker方法只有这个空参数的方法。点进去freeMarker()会发现它的注释写的很清楚:会有一个默认的视图名前缀(就是templateLoaderPath)和一个以".ftl"结尾的后缀。本身这个方法就是个简写ViewResolver的方法,就不要做多余的事了。
其实还有一种配置视图解析器的方式:
@Bean
public ViewResolver viewResolver() {
FreeMarkerViewResolver viewResolver = new FreeMarkerViewResolver("",".ftl");
viewResolver.setContentType("text/html;charset=UTF-8");
viewResolver.setCache(true);
return viewResolver;
}
这种方式与configViewResolver本质是等价的,但是其可以自己手动配置很多其他的视图解析器属性(其实我看中的是可以配置ContentType,可以解决FreeMarker中文乱码的问题)。
无法正确解析FreeMarker视图的更多相关文章
- [Spring MVC] - JSP + Freemarker视图解释器整合
Spring MVC中如果只使用JSP做视图,可以使用下面这段即可解决: <!-- 视图解释类 --> <bean class="org.springframework.w ...
- [Spring MVC] - JSP + Freemarker视图解释器整合(转)
Spring MVC中如果只使用JSP做视图,可以使用下面这段即可解决: <!-- 视图解释类 --> <bean class="org.springframework.w ...
- WebAPI接口返回ArrayList包含Dictionary对象正确解析
一.问题提出 为了减少流量,将key-value(键值对)直接输出到Dictionary<string, string>,接口返回结果如下: 其中{}里面内容如下: 上图显示600是键,4 ...
- Smarty模板Windows下写代码 放到CentOS6.5无法正确解析
如题:报错: Unable to load template file 'System/header.htm' in '/var/www/website/cms/Template/Default/We ...
- 深入解析MySQL视图view
阅读目录---深入解析MySQL视图view 创建视图 查看视图 视图的更改 create or replace view alter DML drop 使用with check option约束 嵌 ...
- springMVC源码解析--ViewResolver视图解析器执行(三)
之前两篇博客springMVC源码分析--ViewResolver视图解析器(一)和springMVC源码解析--ViewResolverComposite视图解析器集合(二)中我们已经简单介绍了一些 ...
- 整合Freemarker视图层和整合jsp视图层和全局捕获异常
SpringBoot静态资源访问 1.静态资源:访问 js / css /图片,传统web工程,webapps springboot 要求:静态资源存放在resource目录下(可以自定义文件存放) ...
- 峰哥说技术:08-Spring Boot整合FreeMarker视图
Spring Boot深度课程系列 峰哥说技术—2020庚子年重磅推出.战胜病毒.我们在行动 08 峰哥说技术:Spring Boot整合FreeMarker视图 前面带着大家整合了Thymelea ...
- springMVC源码解析--ViewResolverComposite视图解析器集合(二)
上一篇博客springMVC源码分析--ViewResolver视图解析器(一)中我们介绍了一些springMVC提供的很多视图解析器ViewResolver,在开发的一套springMVC系统中是可 ...
随机推荐
- hdu 1004 Let the Balloon Rise strcmp、map、trie树
Let the Balloon Rise Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Oth ...
- Codeforces Round #319 (Div. 2) C. Vasya and Petya's Game 数学
C. Vasya and Petya's Game time limit per test 1 second memory limit per test 256 megabytes input sta ...
- c++ 判断容器是否为空
#include <iostream> #include <vector> #include <string> using namespace std; int m ...
- Jmeter非GUI模式启动
首先我们需要了解,GUI和非GUI模式启动Jmeter对测试的影响:Jmeter可视化界面及监听器展示结果需要消耗负载资源,从而导致,在大并发的情况下GUI方式会导致负载机资源紧张,对性能造成影响 e ...
- 《图解Http》 2-6章: 基础,报文,状态码,首部。
HTTP协议和Cookie 是stateless协议,自身不对请求和响应之间的通信状态进行保存.但随着技术发展,为了实现保存状态的功能,引入了Cookie技术. Cookie在请求和响应报文中写入信息 ...
- System.ComponentModel.DataAnnotations 命名空间和RequiredAttribute 类
System.ComponentModel.DataAnnotations 命名空间提供定义 ASP.NET MVC 和 ASP.NET 数据控件的类的特性. RequiredAttribute 指定 ...
- MsWord 操作总结
转自(http://www.cnblogs.com/eye-like/p/4121219.html) Msdn上的word操作api(不过只有英文版,英文差的先闪过) Word2007的API:htt ...
- 【转】MongoDB 3.0 正式版本即将发布,强力推荐
MongoDB 今天宣布3.0 正式版本即将发布.这标志着 MongoDB 数据库进入了一个全新的发展阶段,提供强大.灵活而且易于管理的数据库管理系统. MongoDB 3.0 在性能和伸缩性方面都有 ...
- js中的reduce()函数
1. 首先看下语法如下 2 . 写了个demo如下 var fa = [1,2,3,4] function red(a, b) { console.log(arguments); return a + ...
- 简单CSS3代码实现立方体以及3D骰子
1 实现3D立方体 首先准备好UL以及6个Li: 代码如下 ul { position: absolute; top: 50%; left: 50%; transform:translate(-50% ...