在使用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视图的更多相关文章

  1. [Spring MVC] - JSP + Freemarker视图解释器整合

    Spring MVC中如果只使用JSP做视图,可以使用下面这段即可解决: <!-- 视图解释类 --> <bean class="org.springframework.w ...

  2. [Spring MVC] - JSP + Freemarker视图解释器整合(转)

    Spring MVC中如果只使用JSP做视图,可以使用下面这段即可解决: <!-- 视图解释类 --> <bean class="org.springframework.w ...

  3. WebAPI接口返回ArrayList包含Dictionary对象正确解析

    一.问题提出 为了减少流量,将key-value(键值对)直接输出到Dictionary<string, string>,接口返回结果如下: 其中{}里面内容如下: 上图显示600是键,4 ...

  4. Smarty模板Windows下写代码 放到CentOS6.5无法正确解析

    如题:报错: Unable to load template file 'System/header.htm' in '/var/www/website/cms/Template/Default/We ...

  5. 深入解析MySQL视图view

    阅读目录---深入解析MySQL视图view 创建视图 查看视图 视图的更改 create or replace view alter DML drop 使用with check option约束 嵌 ...

  6. springMVC源码解析--ViewResolver视图解析器执行(三)

    之前两篇博客springMVC源码分析--ViewResolver视图解析器(一)和springMVC源码解析--ViewResolverComposite视图解析器集合(二)中我们已经简单介绍了一些 ...

  7. 整合Freemarker视图层和整合jsp视图层和全局捕获异常

    SpringBoot静态资源访问 1.静态资源:访问 js / css /图片,传统web工程,webapps springboot 要求:静态资源存放在resource目录下(可以自定义文件存放) ...

  8. 峰哥说技术:08-Spring Boot整合FreeMarker视图

    Spring Boot深度课程系列 峰哥说技术—2020庚子年重磅推出.战胜病毒.我们在行动 08  峰哥说技术:Spring Boot整合FreeMarker视图 前面带着大家整合了Thymelea ...

  9. springMVC源码解析--ViewResolverComposite视图解析器集合(二)

    上一篇博客springMVC源码分析--ViewResolver视图解析器(一)中我们介绍了一些springMVC提供的很多视图解析器ViewResolver,在开发的一套springMVC系统中是可 ...

随机推荐

  1. xtu 1242 Yada Number 容斥原理

    Yada Number Problem Description: Every positive integer can be expressed by multiplication of prime ...

  2. MySQL返回影响行数的测试示例

    found_rows() : select row_count() : update delete insert 注:需要配合相应的操作一起使用,否则返回的值只是1和-1(都是不正确的值) 示例: d ...

  3. Java中泛型区别以及泛型擦除详解

    一.引言 复习javac的编译过程中的解语法糖的时候看见了泛型擦除中的举例,网上的资料大多比较散各针对性不一,在此做出自己的一些详细且易懂的总结. 二.泛型简介 泛型是JDK 1.5的一项新特性,一种 ...

  4. UVA-4288 Cat vs. Dog (最大独立集)

    题目大意:猫狗大赛,s个猫和t个狗,有v个投票者,他们不是爱猫者就是爱狗者,所以爱猫者一定会对某条猫投晋级票,对某条狗投淘汰票,爱狗者亦然.现在已知这v个人的投票情况,应该使哪些畜牲晋级或淘汰才能使投 ...

  5. DBMS_LOB的简单用法以及释放DBMS_LOB生成的临时CLOB内存

    dbms_lob包(一) dbms_lob包(二) 如何释放DBMS_LOB.CREATETEMPORARY的空间 Temporary LOB导致临时表空间暴满. oracle数据库中的大对象1——永 ...

  6. PHP:第五章——字符串加密及校验函数

    <?php header("Content-Type:text/html;charset=utf-8"); //1.md5——计算字符中的散列值 //对一段信息(Messag ...

  7. 在JavaScript中进行文件处理,第一部分:基础

    译注:原文是<JavaScript高级程序设计>的作者Nicholas Zakas写的,本翻译纯属为自己学习而做,仅供参考.原文链接:这里 很多年前,我在一次Goole面试被问到,如何在w ...

  8. 201621123010 《Java程序设计》第1周学习总结

    1. 本周学习总结 本周主要学习了五个知识点 Java是面向对象的语言 JDK,JRE,JVM的联系 javac及java指令 Java跨平台运行的原理 新概念:类,类是面向对象中的概念 2. 书面作 ...

  9. L201

    The American public’s obsession with dieting has led to one of the most dangerous healthmisconceptio ...

  10. erhai系统使用_web

    使用前说明1.安装mysql数据库,安装数据库管理器EMS(SQL Manager Lite for MySQL),将数据库导入数据库管理器: 注意对配置文件my.ini的修改.2.启动resin W ...