刚刚一个我负责的网站,出现了一个bug ,在之前没有遇到过,而且生产环境运行了4/5年了也没有发生该问题,今天发生了。所以查了一下<fmt:formatNumber>标签的用法,自己记录一下。

<fmt:formatNumber>标签用于格式化数字,百分比,货币。

属性

<fmt:formatNumber>标签有如下属性:

属性 描述 是否必要 默认值
value 要显示的数字
type NUMBER,CURRENCY,或 PERCENT类型 Number
pattern 指定一个自定义的格式化模式用与输出
currencyCode 货币码(当type="currency"时) 取决于默认区域
currencySymbol 货币符号 (当 type="currency"时) 取决于默认区域
groupingUsed 是否对数字分组 (TRUE 或 FALSE) true
maxIntegerDigits 整型数最大的位数
minIntegerDigits 整型数最小的位数
maxFractionDigits 小数点后最大的位数
minFractionDigits 小数点后最小的位数
var 存储格式化数字的变量 Print to page
scope var属性的作用域 page

如果type属性为percent或number,那么您就可以使用其它几个格式化数字属性。maxIntegerDigits属性和 minIntegerDigits属性允许您指定整数的长度。若实际数字超过了maxIntegerDigits所指定的最大值,则数字将会被截断。

有一些属性允许您指定小数点后的位数。minFractionalDigits属性和maxFractionalDigits属性允许您指定小数点后的位数。若实际的数字超出了所指定的范围,则这个数字会被截断。

数字分组可以用来在每三个数字中插入一个逗号。groupingIsUsed属性用来指定是否使用数字分组。当与minIntegerDigits属性一同使用时,就必须要很小心地来获取预期的结果了。

您或许会使用pattern属性。这个属性可以让您在对数字编码时包含指定的字符。接下来的表格中列出了这些字符。

符号 描述
0 代表一位数字
E 使用指数格式
# 代表一位数字,若没有则显示0
. 小数点
, 数字分组分隔符
; 分隔格式
- 使用默认负数前缀
% 百分数
? 千分数
¤ 货币符号,使用实际的货币符号代替
X 指定可以作为前缀或后缀的字符
' 在前缀或后缀中引用特殊字符

实例演示

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %> <html>
<head>
<title>JSTL fmt:formatNumber Tag</title>
</head>
<body>
<h3>Number Format:</h3>
<c:set var="balance" value="120000.2309" />
<p>Formatted Number (1): <fmt:formatNumber value="${balance}"
type="currency"/></p>
<p>Formatted Number (2): <fmt:formatNumber type="number"
maxIntegerDigits="3" value="${balance}" /></p>
<p>Formatted Number (3): <fmt:formatNumber type="number"
maxFractionDigits="3" value="${balance}" /></p>
<p>Formatted Number (4): <fmt:formatNumber type="number"
groupingUsed="false" value="${balance}" /></p>
<p>Formatted Number (5): <fmt:formatNumber type="percent"
maxIntegerDigits="3" value="${balance}" /></p>
<p>Formatted Number (6): <fmt:formatNumber type="percent"
minFractionDigits="10" value="${balance}" /></p>
<p>Formatted Number (7): <fmt:formatNumber type="percent"
maxIntegerDigits="3" value="${balance}" /></p>
<p>Formatted Number (8): <fmt:formatNumber type="number"
pattern="###.###E0" value="${balance}" /></p>
<p>Currency in USA :
<fmt:setLocale value="en_US"/>
<fmt:formatNumber value="${balance}" type="currency"/></p>
</body>
</html>

运行结果如下:

NUMBER FORMAT:
Formatted Number (1): £120,000.23 Formatted Number (2): 000.231 Formatted Number (3): 120,000.231 Formatted Number (4): 120000.231 Formatted Number (5): 023% Formatted Number (6): 12,000,023.0900000000% Formatted Number (7): 023% Formatted Number (8): 120E3 Currency in USA : $120,000.23

注意:

   在格式化后如果不加属性 groupingUsed =‘false’ 标签将自动默认为true 。默认为true的效果就是1,000 。如果在el 表达式中要求有数字计算的话,将会报错。因为其默认为string ,不可以计算。

关于jsp 中数字格式化<fmt:formatNumber>标签的用法的更多相关文章

  1. <fmt:formatNumber>标签

    <fmt:formatNumber>标签用于格式化数字,百分比,货币. 属性 <fmt:formatNumber>标签有如下属性: 属性 描述 是否必要 默认值 value 要 ...

  2. jstl <fmt:formatNumber>标签

    标签用于格式化数字,百分比和货币. 如果type属性为百分比或数字,则可以使用多个数字格式属性.maxIntegerDigits和minIntegerDigits属性允许您指定数字的非分数部分的大小. ...

  3. 关于JSP中<body onload="fun()">body标签中onload中函数不执行问题

    问题描述: 在一个页面中,我们经常会初始化一下数据,而且会在指定的DOM元素初始化数据,这时候我们就会使用<body onload="fun()">来加载我们的数据.o ...

  4. web开发----jsp中通用模版的引用 include的用法

    1.静态引入的示例 通过对两种用法的了解之后  我们现在 使用静态引入 因为上述原因  我的模版页中 只有div  不会有 path等定义  也不会有html标签 如下: 我的header.jsp 全 ...

  5. jsp日期显示格式化-<fmt:formatDate

    在处理从数据库读取到的日期的时候发现,视图层通过EL表达式获取的日期格式跟预期不符 为格林威治时间(GMT)格式 解决: 1.引入JSTL标签 <%@ taglib prefix="f ...

  6. Jsp中如何在<c:forEach>标签内获取集合的长度

    利用jstl标签functions的prefix属性的length属性值 1.首先在jsp页面导入jstl function标签 <%@ taglib prefix="fn" ...

  7. JSP中嵌入java代码的标签方式(转)

    (1)声明变量或方法 :  <%! 声明; %> :慎重使用,因为此方法定义的是全局变量 (2)java片段(scriptlet):  <% java代码; %> (3)表达式 ...

  8. jsp 中 jstl c:if等标签失效问题

    <c:if test="${page == 1}"> ${s.index+1} </c:if> <c:if test="${page > ...

  9. JSP中三种弹出对话框的用法《转》

    对话框有三种 1:只是提醒,不能对脚本产生任何改变: 2:一般用于确认,返回 true 或者 false ,所以可以轻松用于 if...else...判断 3: 一个带输入的对话框,可以返回用户填入的 ...

  10. JSTL中&#60;c:set&#62;标签的用法

    <c:set>标签有两种不同的属性设置:var和target. var“版本”用于设置作用域属性,target“版本”用于设置bean属性或Map值. 这两个版本都有两种形式:有标签体和没 ...

随机推荐

  1. 笔记本电脑有WIFI,但不可上网

    有时候我们玩电脑时发现连上的WiFi在自己的电脑上不可用,但别人的却好好的,这要怎么办呢? 我们不妨试一试这个方法: 1 打开控制面板 2 点击网络和Internet,点击里面的Internet选项 ...

  2. 学习Java Day12

    今天学习了多维数组

  3. h5与原生app通信的各种功能

    import config from '@/config/index'; import cubeModule from '_public/CubeModule.json'; const _MIDEA_ ...

  4. [代码审计基础 02]-SQL注入和预编译和预编译绕过

    SQL注入 thinkphp基本没得SQL注入,除非魔改 ORM框架的错误使用 一个专门用来防御SQL注入的框架 错误写法-java/mybatis <select id = "fin ...

  5. MySQL索引相关知识学习心得

    你知道的越多,你不知道的也就越多 -- 芝诺曾 一.MySQL索引学习 MySQl主要有两种类型的索引:哈希索引.B+树索引 1.哈希索引 哈希索引可以以O(1)的时间复杂度进行查找,但是这样查找导致 ...

  6. element-ui/lib/style.css in ./src/main.js 解决方案

    在node_modules 中    找到element-ui/lib路径 创建style.css文件   就好了

  7. python flask后端request获取参数的几种方式整理

    最近用 flask 写后端,将获取访问参数的几种方式总结整理一下,仅供参考 从 postman 上来看,调用后端接口传参的方式有两种,一种是 params,参数是以?a=x&b=y 的形式显示 ...

  8. 初始化安装后 Nacos 动态路由配置不生效

    一.问题描述 1.每次初始化安装整套项目,包括安装 Nacos 和其他服务还有mysql,redis等其他中间件,安装后 Nacos 获取不到 nacos 路由信息(包括后续新写入动态路由配置)!只有 ...

  9. MySQL 修改字段子表中的顺序

    修改字段排列位置 ALTER TABLE 表名 MODIFY 字段名1 数据类型 FIRST|AFTER 字段名2 参数说明 FIRST,可选参数 将字段1,修改为表的第一个字段. AFTER 字段名 ...

  10. mybatis_pagehelper_selectOne的SQL语句被莫名的增加分页相关设置,暂定解决办法

    在使用mybatis.以及其分页插件pagehelper时,原本的一个selectOne的sql语句被莫名(原因未知)的加上了分页相关,引起如下异常: exception is org.apache. ...