ALL is Well!
敏捷是一条很长的路,摸索着前进着
BlogJava
::
首页
::
新随笔
::
联系
::
聚合
::
管理
::
30 随笔 :: 23 文章 :: 71 评论 :: 0 Trackbacks
<
2010年12月
>
日
一
二
三
四
五
六
28
29
30
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
1
2
3
4
5
6
7
8
公告
声明:
本博客文章如无特别注明,均为原创,作者保留所有权利!欢迎转载,转载请注明出处
BlogJava
。
常用链接
我的随笔
我的文章
我的评论
我的参与
最新评论
留言簿
(3)
给我留言
查看公开留言
查看私人留言
随笔分类
Freemarker(4)
(rss)
J2EE(3)
(rss)
J2SE(3)
(rss)
Java(16)
(rss)
JUnit(2)
(rss)
Linux(1)
(rss)
Maven2(8)
(rss)
MyBatis/iBatis(1)
(rss)
POI(1)
(rss)
Quartz(1)
(rss)
Spring(7)
(rss)
Struts2(3)
(rss)
TDD
(rss)
敏捷开发
(rss)
随笔档案
2011年4月 (2)
2011年3月 (2)
2010年12月 (4)
2010年11月 (3)
2010年10月 (5)
2010年9月 (26)
文章分类
J2EE(1)
(rss)
J2SE(3)
(rss)
JavaScript(1)
(rss)
MyBatis/iBatis
(rss)
POI
(rss)
技术知识(6)
(rss)
数据库(1)
(rss)
经验点滴(1)
(rss)
随笔
(rss)
文章档案
2010年12月 (1)
2010年9月 (10)
交流社区
CSDN
eoe(Android开发)
JavaEye
友情链接
Daniel Teng's blog
Max On Java
我在CSDN的家
胡奇的专栏
学习资源库
Maven -Available Plugins
maven repository
得益网
搜索
最新评论
1. re: JUnit单元测试Mock技术之jMock用法介绍
JMockService是啥?
--pjl
2. re: 通过Spring实现对自定义注解属性进行资源注入
ffhty
--如烦人烦人
3. re: 详细描述 快速排序 的过程 附Java实现
误人子弟啊!
--哥哥
4. re: POI3.6 生成Excel2007 效率低的解决办法
本来就应该这样写,而且可以直接在构造方法中实例化这些样式,然而即使这样也没有根本性的解决问题。当数据量稍微大些,多用户操作的时候就不知道怎么死的了。
--老左
5. re: Java SSH远程执行Shell脚本实现
请问如果脚本中的命令为top的话请问该怎么返回执行结果呢?
--tlone
阅读排行榜
1. MyEclipse的Maven插件 安装与配置(17781)
2. java代码实现利用 classloader 动态加载 jar包、文件夹到classpath中(13681)
3. Java SSH远程执行Shell脚本实现(13586)
4. JUnit4用法详解(13189)
5. JUnit单元测试Mock技术之jMock用法介绍(12051)
评论排行榜
1. 扩展Spring-实现对外部引用的属性文件进行加密、解密(8)
2. Java SSH远程执行Shell脚本实现(7)
3. MyEclipse的Maven插件 安装与配置(7)
4. freemarker数字格式化引入的问题(6)
5. iBatis/MyBatis 主子表关联查询(5)
freemarker数字格式化引入的问题
问题
freemarker在解析数据格式的时候,默认将数字按3位来分割,例如1000被格式化为1,000,这样做看似美观,但在实际操作时候会带来问题。例如我一个页面有一个元素,该元素的值由后台绑定且超过1000,那么当我要使用这个元素的值的时候,便会出现问题。
例如,我在ftl文件中这样写:
<
input
type
="hidden"
id
="testElement"
name
="testElement"
value
="${size}"
/>
假设后台绑定的size为1000。
然后我在js里使用这个testElement元素的值。
var
t
=
$(
"
#testElement
"
);
alert(t);
alert(parseInt(t));
alert(Number(t));
得到的值是:
1,000
1
NaN
这下悲剧了,没有一个是我想要的数值类型1000,这让我情何以堪啊。
我之前有一个随笔,
基于Struts2、Freemarker的分页组件实现(附工程源码)
,便因为freemarker的数字格式化问题,存在一个bug。
在数据超过1000时候,点击下一页,便会报错。原因是将1,000传到了后台,当作是总记录数,而这个值并非数值。
解决问题
* 在模板中直接加.toString()转化数字为字符串,如:${size.toString()};
* 在freemarker配置文件freemarker.properties(在类路径下即可)加<#setting number_format="#">;
* 在模板中直接加<#setting number_format="#">;
* 通过freemarker.template.Configuration的config.setNumberFormat("#")来设定freemarker对数值的格式化;
其实后三种方法的思路是一致的,只是实现方法不同而已。如果应用中已经存在了
freemarker.properties 并配置了其他的属性,可以在这里配置,否则推荐使用最后一种方法。
最后我是用最后一种方法解决的问题。分页组件上的问题也解决了。
posted on 2010-12-29 14:54
李 明
阅读(5801)
评论(6)
编辑
收藏
所属分类:
Freemarker
评论
#
re: freemarker数字格式化引入的问题
2010-12-29 19:50
disget
${size?c}就可以完成纯数字输出
LZ火候欠大了
多看多学习,别闭门造车
回复
更多评论
#
re: freemarker数字格式化引入的问题
2010-12-30 08:48
礼物
我晕,好好看看文档再说吧,这不是bug
回复
更多评论
#
re: freemarker数字格式化引入的问题
2010-12-30 13:12
Ronaldo
回复楼上:
我有一点很奇怪了。
我有说过这是freemarker的bug吗?
我是说我自己写的东西,因为忽略了这一点,存在bug。
由于freemarker这种将数字超过3位的格式化为形如1,000的,导致了我之前的写一个分页的宏点击下一页或上一页时都会报异常。
麻烦看清楚了再评论。谢谢。
回复
更多评论
#
re: freemarker数字格式化引入的问题
2010-12-30 13:23
Ronaldo
@disget
解决问题的方式有很多种。你说的方法也确实可行。
但这个要在每个需要的地方都要这样写才行。
回复
更多评论
#
re: freemarker数字格式化引入的问题
2012-09-07 14:35
youke
@disget
这是个办法但是工作量太大,很是麻烦的。自己水平有限还批评别人,忒搞笑了吧
回复
更多评论
#
re: freemarker数字格式化引入的问题
2012-09-28 10:09
礼物
@Ronaldo
“我之前有一个随笔,基于Struts2、Freemarker的分页组件实现(附工程源码) ,便因为freemarker的数字格式化问题,存在一个bug。
在数据超过1000时候,点击下一页,便会报错。原因是将1,000传到了后台,当作是总记录数,而这个值并非数值。”
针对这个问题freemarker可以使用格式化定义: <#setting number_format="0.####">
回复
更多评论
新用户注册
刷新评论列表
只有注册用户
登录
后才能发表评论。
网站导航:
博客园
IT新闻
知识库
C++博客
博问
管理
相关文章:
freemarker数字格式化引入的问题
基于Struts2、Freemarker的分页组件实现(附工程源码)
解决 freemarker 变量没有值时抛出异常
基于Struts2和freemarker的异常提示信息的统一处理
Powered by:
BlogJava
Copyright © 李 明