package com.yy.config;

 import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.ViewResolver;
import org.springframework.web.servlet.config.annotation.DefaultServletHandlerConfigurer;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
import org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer;
import org.springframework.web.servlet.view.freemarker.FreeMarkerView;
import org.springframework.web.servlet.view.freemarker.FreeMarkerViewResolver; import java.util.Properties; /**
* 配置上下文加载需要的bean
* 包含Web组件的bean,如控制器、视图解析器、处理器映射
* User : liuhuangyinying
* Date : 2017-03-21 15:48
*/
@Configuration
@EnableWebMvc
@ComponentScan("com.yy") // 启动组件扫描
public class WebConfig extends WebMvcConfigurerAdapter{ /**
* 配置静态文件处理
*/
@Override
public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) {
configurer.enable("/WEB-INF/static/");
} /**
* 配置freemarker视图解析器
*/
@Bean
public ViewResolver viewResolver(){
FreeMarkerViewResolver viewResolver = new FreeMarkerViewResolver();
viewResolver.setViewClass(FreeMarkerView.class);
viewResolver.setCache(false);
viewResolver.setPrefix("/WEB-INF/template/");
viewResolver.setSuffix(".ftl");
viewResolver.setContentType("text/html;charset=utf-8");
viewResolver.setExposeRequestAttributes(true);
viewResolver.setExposeSessionAttributes(true);
viewResolver.setExposeSpringMacroHelpers(true);
viewResolver.setRequestContextAttribute("rc");
return viewResolver;
} @Bean
public FreeMarkerConfigurer freeMarkerConfigurer(){
FreeMarkerConfigurer freeMarkerConfigurer = new FreeMarkerConfigurer();
freeMarkerConfigurer.setTemplateLoaderPath("/");
freeMarkerConfigurer.setDefaultEncoding("UTF-8");
Properties properties = new Properties();
properties.put("template_update_delay",10);
properties.put("defaultEncoding","UTF-8");
properties.put("url_escaping_charset","UTF-8");
properties.put("locale","zh_CN");
properties.put("boolean_format","true,false");
properties.put("time_format","HH:mm:ss");
properties.put("datetime_format","yyyy-MM-dd HH:mm:ss");
properties.put("date_format","yyyy-MM-dd");
properties.put("number_format","#,###.##");
properties.put("whitespace_stripping","true");
properties.put("classic_compatible","true");
freeMarkerConfigurer.setFreemarkerSettings(properties);
return freeMarkerConfigurer;
}
}

配置后启动项目,项目居然报错

居然是空指针错误,那么就只能设置断点调试,看看是否缺少配置什么属性。

跟踪到这一步的时候发现,这里抛出的异常,那么继续往下调试:

进入props.setProperty方法,会发现进入到java.util.Properties类报错:

什么鬼,只要不是String类型就设置为null,也就是说不支持int和boolean类型。

也就是说这里的value都必须加上双引号。不是经典的java包就是百分百可以信任的,遇到问题仍然要看源码才可以解决问题。

错误提示特别是空指针不一定是根源,断点真是个好东西。Love  Love Love

使用javaconfig配置freemarker的更多相关文章

  1. springMVC配置freemarker 二(问题讨论篇)

    上面一篇我已经说明了如何去配置freemarker,这里我就谈谈遇到的问题吧. 首先, 为什么要删除上面之前的.你要使用freemarkerviewresolver和上面的冲突了,因此要注释掉上面的. ...

  2. springMVC配置freemarker

    这里呢,我首先来说明一下写该篇的目的. 我最近要用到freemarker因此研究了一下这个东西. 先来说说如何配置吧. 1.jar包.地址见下链接. http://pan.baidu.com/s/1j ...

  3. Spring 使用javaconfig配置

    除了使用xml,spring提供javaconfig配置,下面是简单的例子: 1.声明接口 /** * */ package com.junge.demo.spring.service; /** * ...

  4. spring mvc:练习:javaConfig配置和注解

    Spring4 MVC HelloWorld 注释/JavaConfig为示例,一步一步以简单的方式学习Spring4 MVC 的注解,项目设置,代码,部署和运行. 我们已经使用XML配置开发了一个H ...

  5. 使用IDEA的gradle整合spring+springmvc+mybatis 采用javaconfig配置

    1.在上篇博客里讲述了spring+mybatis的整合,这边在上篇的基础上进行开发. 上篇博客链接http://www.cnblogs.com/huangyichun/p/6149946.html ...

  6. spring基础系列--JavaConfig配置

    原创作品,可以转载,但是请标注出处地址:http://www.cnblogs.com/V1haoge/p/7171011.html 早以前,Spring推荐使用XML的方式来定义Bean及Bean之间 ...

  7. Spring第二篇和第三篇的补充【JavaConfig配置、c名称空间、装载集合、JavaConfig与XML组合】

    前言 在写完Spring第二和第三篇后,去读了Spring In Action这本书-发现有知识点要补充,知识点跨越了第二和第三篇,因此专门再开一篇博文来写- 通过java代码配置bean 由于Spr ...

  8. SpringBoot下配置FreeMarker配置远程模版

    需求产生原因 要求在同一个接口中,根据不同的参数,返回不同的视图结果 所有的视图中的数据基本一致 要求页面能静态化,优化SEO 例如:A接口返回客户的信息 客户A在调用接口时,返回其个性化定制的页面A ...

  9. eclipse配置freemarker,*.ftl文件

    亲测,提供2种方式,效果都不错: ----------------------------------------- 1.直接下载相应的插件.只需要下载FreeMarker的识别Jar包就可以:888 ...

随机推荐

  1. 《HelloGitHub》第 16 期

    <HelloGitHub>第 16 期 兴趣是最好的老师,HelloGitHub 就是帮你找到兴趣! 简介 分享 GitHub 上有趣.入门级的开源项目. 这是一个面向编程新手.热爱编程. ...

  2. (转)OGNL表达式介绍

    OGNL是Object-Graph Navigation Language的缩写,它是一种功能强大的表达式语言(Expression Language,简称为EL),通过它简单一致的表达式语法,可以存 ...

  3. 初学 Python(十二)——高阶函数

    初学 Python(十二)--高阶函数 初学 Python,主要整理一些学习到的知识点,这次是高阶函数. #-*- coding:utf-8 -*- ''''' 话说高阶函数: 能用函数作为参数的函数 ...

  4. matlab怎么查看已安装哪些工具箱和…

    问题描述:matlab怎么查看已安装哪些工具箱和它们相应的版本 解决方法:在命令行里敲击der,回车 效果:

  5. 刚装的系统C盘占空间特别大怎么办?关闭win7的系统还原和调整虚拟内存

    刚装的win7系统,C盘占空间特别大,清理垃圾,清理碎片之后还是特别大,检查一下,系统才20G,C盘却占用了40G,其实是没有关闭系统还原,再就是没有调整虚拟内存.win7旗舰版(其他版本也可能这样, ...

  6. vue学习笔记(1)—— 组件化实现todoList

    一.环境搭建 1.npm 大型应用时推荐用npm安装,npm能很好的和webpack等模块打包器配合使用.具体安装步骤请参考网上的诸多教程.完成后使用如下命令安装vue. $ npm install ...

  7. 浅尝Java(二、代码折叠插件的使用)

    主题:eclipse代码折叠插件的使用. 工作中在使用eclipse开发Java项目时,我们会写很多if,for循环啊什么的,这使得我们的项目代码会有很多很多行.写完后要想检查或者查看,就要从头一行一 ...

  8. 2017年05月10日记一次微项目投产 | 安卓版微信内置浏览器不能解析gzip压缩过的mp4视频的问题

    前言 今天投产了一个小项目,一个很简单的H5,有播放视频功能,使用了videojs插件. 之前也做过数个视频播放,视频的转压都按照既定流程进行,文件放到FTP后,iphone和安卓机测试下来都没有问题 ...

  9. 解决QT编程出现 C2001错误

    最近做项目时,在debug输出或者是在其他用到字符串常量的时候,总会时不时的出现C2001错误,提示"常量中有换行符", 比如 tr("删除此设备") 或者 q ...

  10. 前端到后台ThinkPHP开发整站(完)

    久违了,今天终于抽空把最后的写完了,这是这个项目的最后一篇文章了,把前台的栏目控制器和文章内容控制器的功能实现了. 栏目控制器: <?php namespace Home\Controller; ...