- 浏览: 588174 次
- 性别:
- 来自: 武汉
文章分类
最新评论
-
liuhuo:
总算找到一个可用的了,非常感谢楼主!其他的都不靠谱啊
Flex与Javascript相互调用例子(附源码) -
Array_06:
你好,请问,一个今年7月拿大学毕业证,应届生,大专学历,做Ja ...
为什么程序员得到的报酬与他们的生产力不成正比 -
778856:
sam_kee 写道晕了哦,我想知道快捷键本来默认就是没有快捷 ...
利用eclipse(MyEclipse)快速生成set、get方法的方法 -
hhsc00:
你真对不起老鸟这个称号……
坑爹的360(不吐不快) -
white_crucifix:
somewhater 写道我还以为去360工作去了呢。。。。。 ...
坑爹的360(不吐不快)
今天在项目中发现从界面使用freemarker取值进行计算的时候,会自动把小数点给忽略掉,在网上找到了解决方案。
在开发中很容易忽视一点,输入一个值(可能是小数),输出时如果不做处理,就很容易出现
隐形的BUG。比如,如果从数据库取出一个0.22的数值,一般的输出${x?if_exists?html},
这时是显示0,而不是0.22。
应该写成${x?if_exists?string.number} 或者 ${x?if_exists.toString()?html}
下面就是关于数字的具体介绍:
Built-ins for numbers
Related FAQs: Do you have things like 1,000,000 or 1 000 000
instead of 1000000, or something like 3.14 instead of 3,14 or vice
versa? See this and this FAQ entry, also note the c built-in above.
c
Note
This built-in exists since FreeMarker 2.3.3.
This built-in converts a number to string for ``computer audience''
as opposed to human audience. That is, it formats with the rules that
programming languages used to use, which is independent of all the
locale and number format settings of FreeMarker. It always uses dot as
decimal separator, and it never uses grouping separators (like
3,000,000), nor exponential form (like 5E20), nor superfluous leading
or trailing 0-s (like 03 or 1.0), nor + sign (like +1). It will print
at most 16 digits after the decimal dot, and thus numbers whose
absolute value is less than 1E-16 will be shown as 0. This built-in is
crucial because be default (like with ${x}) numbers are converted to
strings with the locale (language, country) specific number formatting,
which is for human readers (like 300000 is possibly printed as
3,000,000). When the number is printed not for human audience (e.g.,
for a database record ID used as the part of an URL, or as invisible
field value in a HTML form, or for printing CSS/JavaScript numerical
literals) this built-in must be used to print the number (i.e., use
${x?c} instead of ${x}), or else the output will be possibly broken
depending on the current number formatting settings and locale (like
the decimal point is not dot, but comma in many countries) and the
value of the number (like big numbers are possibly ``damaged'' by
grouping separators).
string (when used with a numerical value)
Converts a number to a string. It uses the default format that the
programmer has specified. You can also specify a number format
explicitly with this built-in, as it will be shown later.
There are three predefined number formats: number, currency, and
percent. The exact meaning of these is locale (nationality) specific,
and is controlled by the Java platform installation, rather than by
FreeMarker. You can use these predefined formats like this:
<#assign x=42>
${x}
${x?string} <#-- the same as ${x} -->
${x?string.number}
${x?string.currency}
${x?string.percent}
If your locale is US English, this will certainly produce:
42
42
42
$42.00
4,200%
The output of first three expressions is identical because the
first two expressions use the default format, which is "number" here.
You can change this default using a setting:
<#setting number_format="currency">
<#assign x=42>
${x}
${x?string} <#-- the same as ${x} -->
${x?string.number}
${x?string.currency}
${x?string.percent}
Will now output:
$42.00
$42.00
42
$42.00
4,200%
since the default number format was set to "currency".
Beside the three predefined formats, you can use arbitrary number format patterns written in Java decimal number format syntax:
<#assign x = 1.234>
${x?string("0")}
${x?string("0.#")}
${x?string("0.##")}
${x?string("0.###")}
${x?string("0.####")}
${1?string("000.00")}
${12.1?string("000.00")}
${123.456?string("000.00")}
${1.2?string("0")}
${1.8?string("0")}
${1.5?string("0")} <-- 1.5, rounded towards even neighbor
${2.5?string("0")} <-- 2.5, rounded towards even neighbor
${12345?string("0.##E0")}
outputs this:
1
1.2
1.23
1.234
1.234
001.00
012.10
123.46
1
2
2 <-- 1.5, rounded towards even neighbor
2 <-- 2.5, rounded towards even neighbor
1.23E4
Following the financial and statistics practice, the rounding goes
according the so called half-even rule, which means rounding towards
the nearest ``neighbor'', unless both neighbors are equidistant, in
which case, it rounds towards the even neighbor. This was visible in
the above example if you look at the rounding of 1.5 and of 2.5, as
both were rounded to 2, since 2 is even, but 1 and 3 are odds.
Appart from the Java decimal syntax patterns, you can also write
${aNumber?string("currency")} and like, that will do the same as
${aNumber?string.currency} and like.
As it was shown for the predefined formats earlier, the default formatting of the numbers can be set in the template:
<#setting number_format="0.##">
${1.234}
outputs this:
1.23
Note that the number formatting is locale sensitive:
<#setting locale="en_US">
US people write: ${12345678?string(",##0.00")}
<#setting locale="hu">
Hungarian people write: ${12345678?string(",##0.00")}
outputs this:
US people write: 12,345,678.00
Hungarian people write: 12 345 678,00
You can find information about the formatting of dates here.
round, floor, ceiling
Note
The rounding built-ins exist since FreeMarker 2.3.13.
Converts a number to a whole number using the specified rounding rule:
*
round: Rounds to the nearest whole number. If the number ends
with .5, then it rounds upwards (i.e., towards positive infinity)
*
floor: Rounds the number downwards (i.e., towards neagative infinity)
*
ceiling: Rounds the number upwards (i.e., towards positive infinity)
Example:
<#assign testlist=[
0, 1, -1, 0.5, 1.5, -0.5,
-1.5, 0.25, -0.25, 1.75, -1.75]>
<#list testlist as result>
${result} ?floor=${result?floor} ?ceiling=${result?ceiling} ?round=${result?round}
</#list>
Prints:
0 ?floor=0 ?ceiling=0 ?round=0
1 ?floor=1 ?ceiling=1 ?round=1
-1 ?floor=-1 ?ceiling=-1 ?round=-1
0.5 ?floor=0 ?ceiling=1 ?round=1
1.5 ?floor=1 ?ceiling=2 ?round=2
-0.5 ?floor=-1 ?ceiling=0 ?round=0
-1.5 ?floor=-2 ?ceiling=-1 ?round=-1
0.25 ?floor=0 ?ceiling=1 ?round=0
-0.25 ?floor=-1 ?ceiling=0 ?round=0
1.75 ?floor=1 ?ceiling=2 ?round=2
-1.75 ?floor=-2 ?ceiling=-1 ?round=-2
These built-ins may be useful in pagination operations and like. If
you just want to display numbers in rounded form, then you should
rather use the string built-in or the number_format setting.
发表评论
-
Weblogic的boot.properties文件位置变了
2015-03-24 10:57 1390从10.3.2之后boot.properties文件不再位 ... -
Tomcat启动时报错:java.net.BindException: Permission denied <null>:80
2013-11-09 22:52 2246问题描述:Tomcat启动时报一系列错误: 问题1: ... -
Weblogic启动慢解决方法
2013-09-06 09:08 14821添加 启动参数 : -Xms256m -Xmx ... -
如何在eclipse中安装Eclipse SQL Explorer
2012-02-24 00:19 2733About Eclipse SQL Explorer ... -
用Lucene检索数据库
2012-02-08 18:04 26641.写一段传统的JDBC程序,讲每条的用户信息从数据库读 ... -
手把手教你如何修改Eclipse中所使用的Tomcat的内存大小
2011-07-13 11:43 1430最近在开发新项目的时候,由于用到缓存比较多,导致Eclipse ... -
WINE QQ 2009教程 看很多人还为QQ着急
2011-04-17 14:29 1404一、安装好 Wine 1.2(1.2 ... -
程序员需要具备的基本技能
2011-03-21 21:19 1118软件开发是一个跨度 ... -
为什么程序员得到的报酬与他们的生产力不成正比
2011-03-21 21:18 1338编者按:原文作者J ... -
经验丰富的程序员和代码行数
2011-03-21 21:15 1448编者按:原文作者John D. Cook是一位数学教授、程序 ... -
10句编程箴言,每个程序员都应该知道
2011-03-21 21:11 950所谓谚语,就是用言简意赅、通俗易懂的方式传达人生箴言 ... -
项目管理工具Redmine安装
2011-02-28 10:47 1663关键字: redmine 可以选择直接在http:/ ... -
JavaScript 字符串转换数字
2011-01-06 17:34 1126方法主要有三种 转换函数、强制类型转换、利用js变量弱类 ... -
java使用jdbc轻松连接访问access
2010-11-29 14:50 1205import java.sql.Connection; ... -
java读取文件大全
2010-10-28 16:53 12231、按字节读取文件内容2、按字符读取文件内容3、按行读取文件内 ... -
weblogic启动受管服务器的一个错误
2010-10-09 21:18 3060错误如下: Server is Running in ... -
对Java编程思想的忠告
2010-09-20 15:23 1033编写Java程序的注意事项,对Java编程思想的忠告。 ... -
Tomcat调整内存所能容纳的最大值
2010-08-03 21:41 1639以下为网络摘抄: Tom ... -
weblogic中如果使用80端口和根目录作为应用的默认目录
2010-07-23 19:29 2295使用根目录作为默认目录,需要新建一个工程可以叫做index,然 ... -
Hibernate对各数据库的连接方言
2010-07-20 09:56 1136<session-factory> < ...
相关推荐
Freemarker是一个强大的模板引擎,常用于Web应用中的视图层开发,比如Java Web项目。它允许开发者使用简单的模板语言来动态生成HTML或其他文本格式的文档。本手册将帮助你全面理解和熟练运用Freemarker。 1. **...
本篇文章将深入探讨如何在Java中使用FreeMarker生成带有盖章的PDF合同文件。 首先,让我们了解FreeMarker的基本概念。FreeMarker是一个基于模板的语言,它与Java代码分离,允许开发者用简单的模板语法来表示数据。...
在Struts2中使用FreeMarker,主要涉及以下几个核心概念和步骤: 1. **配置FreeMarker**: - 在Struts2的配置文件(通常为struts.xml)中,你需要指定FreeMarker作为默认的视图技术。 - 配置FreeMarker的路径,...
要开始在Struts2中使用FreeMarker模板,首先需要将`freemarker-2.3.8.jar`库文件导入到你的项目的`WEB-INF/lib`目录下。这个库包含了FreeMarker模板引擎的所有必要组件。然后创建一个新的web工程,例如`...
在处理Freemarker模板引擎时,中文乱码问题是一个常见的挑战,尤其是在国际化应用中。Freemarker是一款功能强大的模板引擎,被广泛应用于Web开发中,用于动态生成HTML、XML等文本格式的页面。然而,当涉及到非英文...
10. **最佳实践**: 使用Freemarker时,应遵循最佳实践,如保持模板简洁,避免过多的逻辑处理,使用合适的模板命名约定,以及充分利用模板继承和导入功能以减少重复代码。 这个“freemarker中文文档与包”资源将帮助...
总结来说,这个压缩包内容可能包括如何在Grails项目中配置和使用FreeMarker,以及如何处理领域类之间的关系映射,特别是“one2many”关系。通过学习这些知识,开发者可以更有效地构建Grails应用,并利用FreeMarker...
字符串处理是FreeMarker中的一个重要方面,可以进行字符串的拼接、截取、替换等操作。例如: ```ftl ${str?upper_case} <!-- 输出 "HELLO WORLD" --> ${str?replace("o", "0")} <!-- 输出 "Hell0 W0rld" --> ``` ...
FreeMarker是一种模板引擎,用于生成文本输出,使用纯Java编写,特别适合基于MVC模式的应用程序。FreeMarker提供了强大的模板语言,可以生成各种文本,如HTML、XML、RTF、Java源代码等等。FreeMarker也支持插件式...
通过以上步骤,你可以在SpringBoot应用中成功集成并使用Freemarker模板引擎。这只是一个基础的介绍,实际开发中,你可以根据项目需求配置更多的Freemarker特性和功能,如缓存管理、日期格式化等,以满足复杂的应用...
Springboot项目中: 1. 使用Apache POI 3.9 自定义样式导出Excel文件...2. 使用freemarker动态生成word .doc文档(带图片Word以及复杂格式word) 详细说明见个人博客及 github: https://github.com/DuebassLei/excel-poi
通过阅读和理解FreeMarker 2.3.23的官方中文文档,开发者能够熟练掌握FreeMarker的使用技巧,从而在Web应用开发中更加高效地创建和管理动态内容。这份文档详尽地涵盖了FreeMarker的各个方面,无论是初学者还是经验...
在Java项目中,通常将这个jar包添加到类路径(classpath)中,以便在程序中使用FreeMarker的API创建和处理模板。 总的来说,这份资源提供了全面的学习FreeMarker的资料,无论是初学者还是经验丰富的开发者,都能...
- **Spring MVC**:在Spring MVC中,Freemarker作为视图解析器,处理Controller返回的模型数据。 - **配置设置**:通过`freemarkerConfigurer` bean,可以在Spring中配置Freemarker的属性。 7. **错误处理和调试*...
在这个例子中,`users`是Java端传递到Freemarker模板的一个list,`user`是循环中的变量,每次迭代时代表`users`列表中的一个元素。`as`关键字用于定义迭代变量。在循环体内,我们可以通过`user`访问当前元素的属性,...
Freemarker是一款强大的模板引擎,常...通过详细研读这份教程,开发者不仅可以掌握Freemarker的基本使用,还能深入理解其高级特性和优化技巧,从而在实际工作中更高效地生成静态文件,提升Web应用的性能和用户体验。
在博文《EOS中使用Freemarker模板生成PDF文件导出》中,作者可能详细介绍了以上步骤,并可能分享了具体代码示例和遇到的问题解决方案。由于没有直接提供该博文的内容,我们只能推测其可能涵盖的主题。例如,作者可能...
这通常是通过`Configuration`对象的`setSharedVariable`方法完成的,将你的自定义指令类实例绑定到一个特定的名字,这个名字就是你在模板中使用的标签名。 3. 使用自定义标签:在模板文件中,你可以像使用内置标签...
- **异常处理**:`<#try>`、`<#catch>`、`<#finally>`用于捕获和处理模板执行过程中的异常。 FreeMarker中文手册中会详细解释这些概念和语法,并提供丰富的示例帮助理解和应用。通过深入阅读和实践,你可以掌握...