grails整合freemarker插件的中文乱码解决及FreeMarker配置

如果你用的是utf-8编码,在grails中使用freemarker出现乱码,可以用以下方法解决。
打开C:\Documents and Settings\Administrator\.grails\1.1.1\projects\monitor\plugins\freemarker-0.1.1\FreemarkerGrailsPlugin.groovy文件(我的项目是monitor),把doWithSpring 方法改成以下

def doWithSpring = {
boolean developmentMode = !application.warDeployed

freemarkerConfig(org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer) {
defaultEncoding="utf-8"
if(developmentMode) {
templateLoaderPath="file:${BuildSettingsHolder.settings.baseDir.absolutePath}/grails-app/views"
} else {
templateLoaderPath="/WEB-INF/grails-app/views"
}
}
freemarkerViewResolver(org.springframework.grails.freemarker.GrailsFreeMarkerViewResolver) {
prefix = ''
suffix = '.ftl'
order = 10
contentType="text/html; charset=utf-8"
}
}




这样即可解决freemarker乱码问题。已经改过的freemarker插件在附件中。
当然,你需要在eclipse中把freemarker文件的编码设为utf-8,同时在页面头中加上<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />


其次,在Freemarker中有一些其他重要的配置,比如使用webwork时,可以用一个名为freemarker.properties的文件进行以下设定:

#locale=utf-8
template_update_delay=5
datetime_format=yyyy-MM-dd HH:mm:ss
date_format=yyyy-MM-dd
time_format=HH:mm:ss
number_format=0.######;
boolean_format=true,false
auto_import="/WEB-INF/ftl_lib/ponyjava.com/index.ftl" as p, "/WEB-INF/ftl_lib/jeecms/index.ftl" as cms
whitespace_stripping=true
#default_encoding=UTF-8
tag_syntax=auto_detect
url_escaping_charset=UTF-8
#struts.freemarker.templatesCache=true
#template_update_delay=60000


那么在Grails中要进行以上设定,应该怎么做呢?
首先freemarker.properties配置文件是不能用了,因为它是webwork才会加载的文件。我们可以通过设置FreemarkerGrailsPlugin.groovy文件来达到配置freemarker的效果。比如:


def doWithSpring = {
boolean developmentMode = !application.warDeployed

freemarkerConfig(org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer) {
[color=red]freemarkerSettings=["number_format":"#","date_format":"yyyy-MM-dd" ][/color] defaultEncoding="utf-8"
if(developmentMode) {
templateLoaderPath="file:${BuildSettingsHolder.settings.baseDir.absolutePath}/grails-app/views"
} else {
templateLoaderPath="/WEB-INF/grails-app/views"
}
}
freemarkerViewResolver(org.springframework.grails.freemarker.GrailsFreeMarkerViewResolver) {
prefix = ''
suffix = '.ftl'
order = 10
contentType="text/html; charset=utf-8"
}
}



上述红字设置了数字格式永远不加","号(freemarker默认大数字每3位加一个逗号),以及日期格式。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值