• 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 并配置了其他的属性,可以在这里配置,否则推荐使用最后一种方法。

    最后我是用最后一种方法解决的问题。分页组件上的问题也解决了。

  • 相关阅读:
    自己用的,存储代码
    ASCII编码表
    全球最热门编程语言20种
    C++中二维数组new小结
    字符,字节和编码
    让工资涨的快的小技巧
    Ip Messenger
    xajax中文手册
    BitmapFile Formats(BMP文件的格式)
    python中返回字符串中指定字符的索引
  • 原文地址:https://www.cnblogs.com/hwaggLee/p/4542289.html
Copyright © 2020-2023  润新知