<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    ALL is Well!

    敏捷是一條很長的路,摸索著前進(jìn)著

      BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
      30 隨筆 :: 23 文章 :: 71 評(píng)論 :: 0 Trackbacks

    問題
    freemarker在解析數(shù)據(jù)格式的時(shí)候,默認(rèn)將數(shù)字按3位來分割,例如1000被格式化為1,000,這樣做看似美觀,但在實(shí)際操作時(shí)候會(huì)帶來問題。例如我一個(gè)頁面有一個(gè)元素,該元素的值由后臺(tái)綁定且超過1000,那么當(dāng)我要使用這個(gè)元素的值的時(shí)候,便會(huì)出現(xiàn)問題。
    例如,我在ftl文件中這樣寫:

    <input type="hidden" id="testElement" name="testElement" value="${size}" />
    假設(shè)后臺(tái)綁定的size為1000。

    然后我在js里使用這個(gè)testElement元素的值。
    var t = $("#testElement");
    alert(t);
    alert(parseInt(t));
    alert(Number(t));


    得到的值是:
    1,000
    1
    NaN

    這下悲劇了,沒有一個(gè)是我想要的數(shù)值類型1000,這讓我情何以堪啊。

    我之前有一個(gè)隨筆,基于Struts2、Freemarker的分頁組件實(shí)現(xiàn)(附工程源碼) ,便因?yàn)閒reemarker的數(shù)字格式化問題,存在一個(gè)bug。
    在數(shù)據(jù)超過1000時(shí)候,點(diǎn)擊下一頁,便會(huì)報(bào)錯(cuò)。原因是將1,000傳到了后臺(tái),當(dāng)作是總記錄數(shù),而這個(gè)值并非數(shù)值。

    解決問題
    * 在模板中直接加.toString()轉(zhuǎn)化數(shù)字為字符串,如:${size.toString()};
    * 在freemarker配置文件freemarker.properties(在類路徑下即可)加<#setting number_format="#">;
    * 在模板中直接加<#setting number_format="#">;
    * 通過freemarker.template.Configuration的config.setNumberFormat("#")來設(shè)定freemarker對(duì)數(shù)值的格式化;

    其實(shí)后三種方法的思路是一致的,只是實(shí)現(xiàn)方法不同而已。如果應(yīng)用中已經(jīng)存在了 freemarker.properties 并配置了其他的屬性,可以在這里配置,否則推薦使用最后一種方法。

    最后我是用最后一種方法解決的問題。分頁組件上的問題也解決了。

    posted on 2010-12-29 14:54 李 明 閱讀(5839) 評(píng)論(6)  編輯  收藏 所屬分類: Freemarker

    評(píng)論

    # re: freemarker數(shù)字格式化引入的問題 2010-12-29 19:50 disget
    ${size?c}就可以完成純數(shù)字輸出
    LZ火候欠大了
    多看多學(xué)習(xí),別閉門造車
      回復(fù)  更多評(píng)論
      

    # re: freemarker數(shù)字格式化引入的問題 2010-12-30 08:48 禮物
    我暈,好好看看文檔再說吧,這不是bug  回復(fù)  更多評(píng)論
      

    # re: freemarker數(shù)字格式化引入的問題 2010-12-30 13:12 Ronaldo
    回復(fù)樓上:
    我有一點(diǎn)很奇怪了。
    我有說過這是freemarker的bug嗎?
    我是說我自己寫的東西,因?yàn)楹雎粤诉@一點(diǎn),存在bug。
    由于freemarker這種將數(shù)字超過3位的格式化為形如1,000的,導(dǎo)致了我之前的寫一個(gè)分頁的宏點(diǎn)擊下一頁或上一頁時(shí)都會(huì)報(bào)異常。

    麻煩看清楚了再評(píng)論。謝謝。  回復(fù)  更多評(píng)論
      

    # re: freemarker數(shù)字格式化引入的問題 2010-12-30 13:23 Ronaldo
    @disget
    解決問題的方式有很多種。你說的方法也確實(shí)可行。
    但這個(gè)要在每個(gè)需要的地方都要這樣寫才行。  回復(fù)  更多評(píng)論
      

    # re: freemarker數(shù)字格式化引入的問題 2012-09-07 14:35 youke
    @disget
    這是個(gè)辦法但是工作量太大,很是麻煩的。自己水平有限還批評(píng)別人,忒搞笑了吧  回復(fù)  更多評(píng)論
      

    # re: freemarker數(shù)字格式化引入的問題 2012-09-28 10:09 禮物
    @Ronaldo
    “我之前有一個(gè)隨筆,基于Struts2、Freemarker的分頁組件實(shí)現(xiàn)(附工程源碼) ,便因?yàn)閒reemarker的數(shù)字格式化問題,存在一個(gè)bug。
    在數(shù)據(jù)超過1000時(shí)候,點(diǎn)擊下一頁,便會(huì)報(bào)錯(cuò)。原因是將1,000傳到了后臺(tái),當(dāng)作是總記錄數(shù),而這個(gè)值并非數(shù)值。”


    針對(duì)這個(gè)問題freemarker可以使用格式化定義: <#setting number_format="0.####">  回復(fù)  更多評(píng)論
      

    主站蜘蛛池模板: 亚洲成a人片在线观看播放| 春意影院午夜爽爽爽免费| 免费观看国产精品| 最新亚洲成av人免费看| 亚洲国产精品久久久久秋霞影院| 精品久久久久久久免费加勒比| 中文在线观看免费网站| 国产精品亚洲精品| 亚洲日本va在线视频观看| 成人特黄a级毛片免费视频| 精品国产免费一区二区三区| 亚洲a级片在线观看| 国产亚洲美女精品久久久| 欧美男同gv免费网站观看| 中文字幕成人免费高清在线视频 | 免费国产成人α片| 久久无码av亚洲精品色午夜| 久久综合日韩亚洲精品色| 国产成人高清精品免费软件| 精品无码国产污污污免费网站| 日韩在线观看免费| 中文字幕亚洲男人的天堂网络 | 久久综合亚洲色HEZYO社区| 亚洲福利精品电影在线观看| 亚洲三级高清免费| 黄页免费在线观看| 人人鲁免费播放视频人人香蕉| 国产亚洲福利在线视频| 久久久无码精品亚洲日韩蜜臀浪潮| 亚洲成AV人网址| 日本19禁啪啪无遮挡免费动图| 亚洲美女免费视频| 午夜免费福利片观看| 本免费AV无码专区一区| 日韩在线观看免费| 在线亚洲v日韩v| 亚洲国产区男人本色| va天堂va亚洲va影视中文字幕| 亚洲视频精品在线| 亚洲av日韩av不卡在线观看| 在线亚洲午夜理论AV大片|