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插件 安裝與配置(17825)
2.?java代碼實現利用 classloader 動態加載 jar包、文件夾到classpath中(13716)
3.?Java SSH遠程執行Shell腳本實現(13622)
4.?JUnit4用法詳解(13222)
5.?JUnit單元測試Mock技術之jMock用法介紹(12095)
評論排行榜
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
李 明
閱讀(5839)
評論(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新聞
Chat2DB
C++博客
博問
管理
相關文章:
freemarker數字格式化引入的問題
基于Struts2、Freemarker的分頁組件實現(附工程源碼)
解決 freemarker 變量沒有值時拋出異常
基于Struts2和freemarker的異常提示信息的統一處理
Powered by:
BlogJava
Copyright © 李 明
主站蜘蛛池模板:
南木林县
|
保德县
|
柘荣县
|
嘉义市
|
卢龙县
|
宁强县
|
河北区
|
建宁县
|
黄浦区
|
钟祥市
|
金昌市
|
囊谦县
|
巴中市
|
宣威市
|
邯郸县
|
黄龙县
|
富顺县
|
泗水县
|
合肥市
|
鄂尔多斯市
|
沅陵县
|
汾阳市
|
宝鸡市
|
宁德市
|
五峰
|
五指山市
|
达拉特旗
|
北流市
|
石景山区
|
柳江县
|
克拉玛依市
|
马山县
|
大关县
|
克什克腾旗
|
平江县
|
资阳市
|
改则县
|
黄平县
|
云龙县
|
攀枝花市
|
张掖市
|