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

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

  • 相关阅读:
    在web应用中使用MEF插件式开发
    IBatis更名为mybatis
    ssh公钥登录
    android摄像头获取图像——第二弹
    android摄像头获取图像——第一弹
    堆排序
    配置开发环境及相关问题
    android摄像头获取图像——第三弹
    冒泡排序
    Linux中环境变量文件及配置
  • 原文地址:https://www.cnblogs.com/hwaggLee/p/4542289.html
Copyright © 2011-2022 走看看