我是靠谱客的博主 自信花卷,这篇文章主要介绍在java中 如何让double 型输出整数不显示小数点和其后的0,现在分享给大家,希望可以做个参考。

public class DoubleTrans{

public static String doubleTrans(double d){
if(Math.round(d)-d==0){
return String.valueOf((long)d);
}
return String.valueOf(d);
}
public static void main(String args[]){
double a=3.0d,b=3.1d;
System.out.println(doubleTrans(a));
System.out.println(doubleTrans(b));
}
}
运行结果:3 3.1

或者使用new DecimalFormat("#.##").format(d);

在页面上显示double时,不显示.0得通过JSTL fmt标签了:

JSTL标签提供了对国际化(I18N)的支持,它可以根据发出请求的客户端地域的不同来显示不同的语言。同时还提供了格式化数据和日期的方法。实现这些功能需要I18N格式标签库(I18N-capable formation tags liberary)。引入该标签库的方法为:

<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>

I18N格式标签库提供了11个标签,这些 标签从功能上可以划分为3类如下:

(1)数字日期格式化。formatNumber标签、formatData标签、parseNumber标签、parseDate标签、timeZone标签、setTimeZone标签。

(2)读取消息资源。bundle标签、message标签、setBundle标签。

(3)国际化。setlocale标签、requestEncoding标签。

接下将详细介绍这些标签的功能和使用方式。

9.3.1 数字日期格式化

数字日期格式化标签共有6个,用来将数字或日期转换成设定的格式。

1.<frm:formatNumber/>标签

该标签依据特定的区域将数字改变为不同的格式来显示。

【语法1】:

<frm:formatNumber value=”被格式化的数据”[type=”number|currency|percent”]

                                               [pattern=”pattern”]

                                               [currencyCode=”code”]

                                               [currencySymbol=”symbol”]

                                               [groupingUsed=”true|false”]

                                               [maxIntergerDigits=”maxDigits”]

                                               [minIntergerDigits=”minDigits”]

                                               [maxFractionDigits=”maxDigits”]

                                               [minFractionDigits=”minDigits”]

                                               [var=”name”]

                                               [scope=page|request|session|application]

/>

【语法2】: 

<frm:formatNumber [type=”number|currency|percent”]

                                               [pattern=”pattern”]

                                               [currencyCode=”code”]

                                               [currencySymbol=”symbol”]

                                               [groupingUsed=”true|false”]

                                               [maxIntergerDigits=”maxDigits”]

                                               [minIntergerDigits=”minDigits”]

                                               [maxFractionDigits=”maxDigits”]

                                               [minFractionDigits=”minDigits”]

                                               [var=”name”]

                                               [scope=page|request|session|application]

> 

<fmt:formatNumber>标签参数说明:

名称

说明

EL

类型

必须

默认值

value

要格式化的数据

是

String

是

无

type

指定类型(单位、货币、百分比等)见表

是

String

否

number

pattern

格式化的数据样式

是

String

否

无

currencyCode

货币单位代码

是

String

否

无

cuttencySymbol

货币符号($、¥)

是

String

否

无

groupingUsed

是否对整数部分进行分组如(9,999)

是

boolean

是

true

maxIntergerDigits

整数部分最对显示多少位数

是

int

否

无

minIntergerDigits

整数部分最少显示多少位

是

int

否

无

maxFractionDigits

小数部分最多显示多少位

是

int

否

无

minFractionDigits

小数部分最少显示多少位

是

int

否

无

var

存储格式化后的数据

否

String

否

无

scope

var的JSP范围

否

String

否

page

Type属性的类型应用:.

类型

说明

示例

number

数字格式

0.8

currency

当地货币

¥0.80

percent

百分比格式

80%

【示例代码】:实现了对数字的格式化、货币的格式、货币的格式化。使用<frm:formatNumber>的各种属性的设定。

<table border=1 cellpadding="0" cellspacing="0" align="center">

 <tr align="center">

<td width="100">类型 </td>

<td width="100">使用数据</td>

<td width="100">结果</td>

<td width="300">说明</td>

 </tr>

 <tr>

 <td>数字格式化</td><td>108.75</td>

 <td><fmt:formatNumber type="number" pattern="###.#">108.75</fmt:formatNumber></td>

 <td>使用pattern可以定义显示的样式。本例设定为###.#小数部分将使用四舍五入法。</td>

 </tr>

 <tr>

 <td>数字格式化</td><td>9557</td>

 <td><fmt:formatNumber type="number" pattern="#.####E0">9557</fmt:formatNumber></td>

 <td>使用科学计数法。</td> 

 </tr>

 <tr>

 <td>数字格式化</td><td>9557</td>

 <td><fmt:formatNumber type="number" >9557</fmt:formatNumber></td>

 </td>

 <td>使用默认分组。</td>

 </tr>

 <tr>

 <td>数字格式化</td><td>9557</td>

 <td><fmt:formatNumber type="number" groupingUsed="false" >9557</fmt:formatNumber></td>

 <td>不使用分组。</td>

 </tr>

 <tr>

 <td>数字格式化</td><td>9557</td>

 <td><fmt:formatNumber type="number" maxIntegerDigits="3">9557</fmt:formatNumber></td>

 <td>使用位数限定,根据指定的位数显示,其他数字忽略。例如:9不被显示。</td>

 </tr>

 <tr>

 <td>百分比格式化</td><td>0.98</td>

 <td><fmt:formatNumber type="percent">0.98</fmt:formatNumber></td>

 <td>用百分比形式显示一个数据。</td>

 </tr>

 <tr>

 <td>货币格式化</td><td>188.88</td>

 <td><fmt:formatNumber type="currency" >188.8</fmt:formatNumber></td>

<td>将一个数据转化为货币形式输出。</td>

 </tr>

 <tr>

 <td>存储数据</td><td>188.88</td>

 <td><fmt:formatNumber type="currency" var="money">188.8</fmt:formatNumber>

 <c:out value="${money}"></c:out>

 </td>

 <td>存储的money的值为${money} </td>

 </tr>

 </table>

 【代码说明】:

(1)从应用角度可以把属性分为三类:数字格式化、货币格式化、百分比格式化。使用type指定类型。

(2)应用于数字格式化的属性有:partten属性、maxIntegerDigits属性、minIntegerDigits属性、maxFractionDigits属性和minFactionDigits属性。其中partten属性在设定格式化样式时会比较准确如:四舍五入、科学计数法的使用。而使用maIntegerDirgits等属性时,只把设定位数以外的数字舍去。

(3)货币格式化可以使用数字格式化的所有属性。如果有必要建议使用partten属性。currencyCode属性和currencySymbol只用于货币格式化。

(4)百分比格式化使用到的属性为type属性、partten属性,设定type属性的类型为percent即可。

(5)使用var属性时,会将格式化后的值存在JSP的某个范围内(一个String类型的字符串包括符号等)。<frm:forNumber>将不再输出格式化后的值可以使用EL表达式输出。

(6)通用属性:type属性、partten属性、var属性和scope属性。

2.<frm:parseNumber>标签

将格式化后的数字、货币、百分比都转化为数字类型。

【语法1】:

<fmt:parseNumber value="number" [type=”number|currency|percent”]

                                                        [pattern=”pattern”]

                                                        [parseLocale=”locale”]                       

                                                        [intergerOnly=”true|false”]

                                                        [scope=”page|request|session|application”]

/>

【语法2】:

<fmt:parseNumber [type=”number|currency|percent”]

                                                        [pattern=”pattern”]

                                                        [parseLocale=”locale”]

                                                        [intergerOnly=”true|false”]

                                                        [scope=”page|request|session|application”]

> 

Number

</fmt:parseNumber>

<fmt:parseNumber>标签参数说明:

名称

说明

EL

类型

是否必须

默认值

value

被解析的字符串

是

String

是

无

type

指定单位(数字、货币、百分比)

是

String

是

number

pattern

格式样式

是

String

否

无

parseLocale

用来替代默认区域的设定

是

String,

Java.util.

Locale

是

默认本地样式

var

存储已经格式化的数据

否

String

否

无

scope

var变量的作用域

否

String

是

page

<fmt:parseNumber>可以看作是<fmt:formatNumber>的逆运算。相应的参数和类型的配置和使用<fmt:formatNumber>格式化时相同。

【示例代码】:实现了从字符串中提取数据,并用合适的数据类型进行存储(浮点性、整型等)。可以对转换后的数据进行加法运算。

 <fmt:formatNumber type="currency" var="money">188.8</fmt:formatNumber>

 <li>格式化前的数据为:<c:out value="${money}"></c:out>

 <fmt:parseNumber var="money" type="currency">${money}</fmt:parseNumber>

 <li>格式化后的数据为:<c:out value="${money}"></c:out>

 <li>可以对格式化的后的数据进行运算: 

 <c:out value="${money+200}"></c:out>

 <li>对百分比进行格式化98%为:

 <fmt:parseNumber type="percent">98%</fmt:parseNumber>

【代码解析】:

(1)首先使用<fmt:formatNumber>将188.8转换为字符串¥188.8并在page范围内存储一个String类型的变量,变量名为money。

(2)使用<fmt:parseNumber>将¥188.8转化为浮点型的数据188.8并赋值为变量money,

则变量money转变为一个浮点型的值188.8,对188.8进行加运算。

(3)直接对一个百分比数98%进行转化。

3.<fmt:formatDate>标签

该标签主要用来格式化日期和时间。

【语法】:

<fmt: formatDate value=”date” [type=”time|date|both”]

                                     [pattern=”pattern”]

                                     [dateStyle=”default|short|medium|long|full”]

                                     [timeStyle=”default|short|medium|long|full”]

                                     [timeZone=”timeZone”]

                                     [var=”name”]

                                     [scope=”page|request|session|application”]

/>

<fmt:formatDate>标签属性说明:

属性名

说明

EL

类型

必须

默认值

value

将要格式化的日期对象。

是

Java.util.Date

是

无

type

显示的部分(日期、时间或者两者)。

是

String

否

date

partten

格式化的样式。

是

String

否

无

dateStyle

设定日期的显示方式。

是

String

否

default

timeStyle

设定时间的显示方式。

是

String

否

default

timeZone

设定使用的时区。

是

String

否

当地所用时区

var

存储已格式化的日期或时间。

否

String

否

无

scope

指定var存储的JSP范围。

否

String

否

无

type属性参数说明:

参数名

说明

time

只显示时间

date

只显示时期

both

显示日期和时间

【示例程序】:实现了对日期的格式化,使用了type、dateStyle、timeStyle等属性。

<fmt:formatDate value="${date}"></fmt:formatDate><br>

<fmt:formatDate value="${date}" type="both"></fmt:formatDate><br>

<fmt:formatDate value="${date}" type="both" dateStyle="default"

 timeStyle="default"></fmt:formatDate><br>

   <fmt:formatDate value="${date}" type="both" dateStyle="short"

 timeStyle="short"></fmt:formatDate><br>

   <fmt:formatDate value="${date}" type="both" dateStyle="long"

 timeStyle="long"></fmt:formatDate><br>

   <fmt:formatDate value="${date}" type="both" dateStyle="full"

timeStyle="full"></fmt:formatDate><br>

   <fmt:formatDate value="${date}" type="both" dateStyle="full"

timeStyle="full"></fmt:formatDate><br>

   

【代码解析】:

(1)首先通过配置JavaBean在页面上实例化java.util.Date对象。实现代码如下:

<jsp:useBean id="date" class="java.util.Date"></jsp:useBean>

(2)对日期对象进行格式化时${date}是一个日期对象,如果给value设的值为String时程序会报错。

(3)设置type为both时,将显示日期和时间,同时示例中依次改变dateStyle和timeStyle的值作为比较。

4.<fmt:parseDate>标签

<fmt:parseDate>标签主要将字符串类型的时间或日期转化为时间或日期对象。

【语法1】:

<fmt:parseDate value=”date” [type=”time|date|both”]

                                                        [pattern=”pattern”]

                                                        [parseLocale=”locale”]

                                                        [dateStyle=”default|short|medium|long|full”]

                                                        [timeStyle=”default|short|medium|long|full”]

                                                        [timeZone=”timezone”]

                                                        [var=”name”]

                                                        [scope=”page|request|session|application”]

/>

【语法2】:

<fmt:parseDate [type=”time|date|both”]

                                                        [pattern=”pattern”]

                                                        [parseLocale=”locale”]

                                                        [dateStyle=”default|short|medium|long|full”]

                                                        [timeStyle=”default|short|medium|long|full”]

                                                        [timeZone=”timezone”]

                                                        [var=”name”]

                                                        [scope=”page|request|session|application”]

> 

Date

</fmt:parseDate>

<fmt:parseData>标签属性说明:

属性名

说明

EL

类型

必须

默认值

value

将要格式化的日期时间

是

String

是

无

type

字符串的类型(日期、时间或全部)

EL

String

是

date

pattern

字符串使用的时间样式

是

String

是

无

parseLocale

取代默认地区设定

是

String

是

默认地区

dateStyle

字符串使用的日期显示方式

是

String

否

default

timeStyle

字符串使用的时间显示格式

是

String

否

default

timeZone

使用的时区

是

String

否

当地区时

var

使用var定义的名字保存对象

否

String

否

无

scope

var的JSP范围

否

String

否

page

【示例代码】:实现了以下功能:首先,使用了<fmt:formatDate>把一个日期对象格式化成一个日期的字符串,并把该字符串以参数名为a存储page范围内。其次,使用<fmt:parseDate>方法把a的值(字符串)格式化成一个Date并以参数名为b存储在page范围内。最后,使用Java脚本证明生成的b为对象。

<fmt:formatDate value="${date}" var="a" type="both"

dateStyle="full" timeStyle="full"></fmt:formatDate>

<fmt:parseDate var="b" type="both" dateStyle="full" timeStyle="full">

${a}

</fmt:parseDate>

   <%

   out.println(pageContext.getAttribute("b").toString());

   out.println("<br>");

   out.println(pageContext.getAttribute("b").hashCode());

   %>

   </body>

</html>

【代码解析】:

(1)使用<fmt:formatDate>把日期对象格式化成字符串。

(2)使用<fmt:parseDate>把字符串对象转化为日期对象,注意同(1)中的参数对比,可以发现两者是一个互逆的过程。

(3)使用Java脚本进行测试Date对象的toString()方法可以输出时间字符串。hashCode()可以得到一个对象的hashCode。该方法只能应用于对象,因此可以证明得到的是一个日期对象。

5.<fmt:setTimeZone>标签

该标签用于设定默认时区或者将时区存储在指定的JSP范围内。

【语法】:

<fmt:setTimeZone value=”value” [var=”name”][scope=”page|request|session|application”]/>

<fmt:setTimeZone>标签属性说明:

参数名

说明

EL

类型

必须

默认值

value

使用的时区

是

String

Java.util.TimeZone

是

无

var

使用var定义的参数名保存值

否

String

否

无

scope

存储var的JSP范围

否

String

否

page

value用来设定使用的时区,例如中国使用的时区为CST,其他的还有EST、PST等。可以把时区存储在指定的JSP范围内,例如存储在session中,用户访问的所有页面都可以显示使用的设定的时区下对应的时间。

【示例代码】

<fmt:setTimeZone value=”EST” scope=”session”/>

提示:有关TimeZone的说明见JDK帮助文档的java.util.TimeZone类。

6.<fmt:timeZone>标签

该标签主要用于设置标签体内使用的时区。

【语法】:

<fmt:timeZone value=”timeZone”>

…..

</fmt:timeZone>

使用<fmt:timeZone></fmt:timeZone>只会应用到标签体内使用的时区,对标签外部将不产生影响。

9.3.2 读取消息资源

读取消息资源用到的标签主要有4个:<fmt:message>标签、<fmt:param>标签、<fmt:bundle>标签和<fmt:setBundle>标签。主要用于从资源文件中读取信息。

1.<fmt:bundle>标签

该标签主要用于将资源文件绑定于它的标签体中的显示。

【语法】:

<fmt:bundle basename=”name”[prefix=”prefix”]>

….标签主题

</fmt:bundle>

<fmt:bundle>标签属性说明:

参数名

说明

EL

类型

必须

默认值

basename

指定使用的资源文件的名称

是

String

是

无

prefix

前置关键字

是

String

否

无

2.<fmt:setBundle>标签

该标签主要用于绑定资源文件或者把资源文件保存在指定的JSP范围内。

【语法】:

<fmt:setBundle basename=”name” [var=”name”]

                                     [scope=”page|request|session|application”]

> 

<fmt:setBundle>标签属性说明:

参数名

说明

EL

类型

必须

默认值

basename

指定使用的资源文件的名称

是

String

是

无

var

指定将资源文件保存的名称

否

String

否

无

scope

设定将资源文件保存的JSP范围

否

String

否

page

3.<fmt:message>标签

该标签主要负责读取本地资源文件,从指定的消息文本资源文件中读取键值,并且可以将键值保存在指定的JSP范围内。

【语法1】:

<fmt:message key=”keyName”[bundle=”bundle”]

                                     [scope=”page|request|session|application”]

/>

【语法2】:

<fmt:message key=”keyName”[bundle=”bundle”]

                                     [scope=”page|request|session|application”]

> 

<fmt:param/>

</fmt:message>

【语法3】:

<fmt:message key=”keyName”[bundle=”bundle”]

                                                        [scope=”page|request|session|application”]

> 

key<fmt:param/>

…

</fmt:message>

<fmt:message>标签属性说明:

参数名

说明

EL

类型

必须

默认值

key

指定键值的名称(索引)

是

String

是

无

bundle

指定消息文本的来源

是

LocalizationContext

否

无

var

指定存储键值的变量名

否

String

否

无

scope

指定var的作用域

否

String

否

page

提示:建议此处的bundle使用EL表达式,因为属性bundle的类型为LocalizationContext,而不是一个String类型的URL。

【示例代码】:实现从指定的资源文件中读取对应key的值。

首先编写一个资源文件内容下

name=olive

password=01234

使用标签从资源文件中读取相应的值。

   <fmt:bundle basename="message">

   <c:out value="从message资源文件中得到的key为name的值为:"></c:out>

   <fmt:message key="name" ></fmt:message>

   </fmt:bundle>

   <hr>

   <fmt:setBundle basename="message" var="m"/>

   <fmt:message key="password" bundle="${m}"></fmt:message>

    ${m}

    【代码解析】:

(1)使用<fmt:bundle>标签指定从message.properties文件中读取值。

(2)使用<fmt:message>标签读取资源文件中key为name的值。<fmt:message>标签放在<fmt:bundle>标签体内使用。

(3)使用<fmt:setBundle>标签在page范围绑定一个配置文件,以m为参数名存储。

(4)使用<fmt:message>标签得到key为password的值,此处指定资源文件的方式为使用<fmt:message>标签的bundle属性来设定。

(5)输出参数m的值,加深对bundle的理解。

<fmt:bundle>标签中有一个prefix属性,该标签用来指明前缀。例如配置文件内容如下:

org.person.name=olive

org.personpassword=01234

如果不使用prefix标签,在取值是要指明前缀。例如:

<fmt:bundle basename=”message”>

<fmt:message key=”org.person.name”></fmt:message>

<fmt:message key=”org.person.password”></fmt:message>

</fmt:bundle>

使用prefix属性可以简化取值时的代码。

<fmt:bundle basename=”message” prefix=”org.person”>

<fmt:message key=”name”></fmt:message>

<fmt:message key=”password”></fmt:message>

</fmt:bundle>

4.<fmt:param>标签

该标签主要用于当<fmt:message>中资源文件中获得键值时,动态的为资源文件中的变量赋值。

【语法1】:

<fmt:param value=”value”/>

【语法2】:

<fmt:param >

…标签主体

</fmt:param>

【示例代码】:

(1)创建资源文件。在message.properties文件中增加一个key和value。

news={0} welcome to out website!<br>today is :{1,date}

表达的含义是键news对应的是一个字符串,字符串中还有动态变量{0}表示第一个动态变量,{1,date}表示第二个动态变量并且该变量是一个日期类型的对象。

(2)通过标签从资源文件中取出键值,并给动态变量赋值显示在页面。

   <fmt:bundle basename="message">

   <fmt:message key="news">

   <fmt:param value="olive" />

   <fmt:param value="${date}"/>

   </fmt:message>

   </fmt:bundle>

  

【代码解析】:

(1)使用<fmt:bundle>标签把资源文件绑定在标签体内。

(2)在<fmt:bundle>标签体内使用<fmt:message>得到键值。

(3)使用<fmt:param>为资源文件中的动态变量赋值。

9.3.3 国际化

国际化这个分类中共包含两个标签:用于设定语言地区<fmt:setLocale/>和用于设定请求的字符编码的<fmt:requestEncoding>标签。

1.<fmt:setLocale/>标签

<fmt:setLocale>标签用来设定用户语言区域。

【语法】:

<fmt:setLocale value=”locale”[variant=”variant”]

                            [scope=”page|request|session|application”]>

<fmt:setLocale>标签属性说明:

参数名

说明

EL

类型

必须

默认值

value

指定区域代码

是

String

java.util.Locale

是

无

variant

操作系统的类型

是

String

是

无

scope

设定时区的作用范围

否

String

是

page

value属性用来指定使用的语言代码,可以从浏览器的【工具】---【Internet选项】---【语言】---【添加】中查看浏览器支持的语言种类及语言代码。例如:中文(zh_cn)、台湾(zh_tw)、香港(zh_mo)等。

【示例代码】:实现了设定不同的区域代码,根据不同的区域代码浏览将显示不同格式的日期。

   <fmt:setLocale value="en_us" />

   <fmt:formatDate value="${date}" type="both" dateStyle="full" timeStyle="full"/>

   <hr>

   <fmt:setLocale value="zh_cn" />

   <fmt:formatDate value="${date}" type="both" dateStyle="full" timeStyle="full"/>

   <hr>

   <fmt:setLocale value="zh_TW"/>

   <fmt:formatDate value="${date}" type="both" dateStyle="full" timeStyle="full"/>

【代码解析】:

(1)浏览器默认跟您使用的操作系统的语言相同,因此默认值zh_cn。使用<fmt:setLocale/>标签设置使用的语言为en_us(英语)。使用<fmt:formateDate>格式化输出的时间字符串,该标签会根据不同的语言输出不同的日期格式。

(2)使用的语言修改为zh_cn,再次用格式化输出。

(3)使用语言修改为zh_TW,输出格式化后的时间。

2.<fmt:requestEncoding>标签

该标签用于设定请求的编码格式。功能同servletRequest.setCharacterEncoding()方法相同。

【语法】:

<fmt:requestEncoding [value=”charEncoding”]/>

【参数说明】:

value属性用来指定使用的编码集例如:gbk、gb2312等。当没有给出value的值时将会自动搜索取寻找合适的编码方式,因此能够很好的解决中文乱码问题。

jstl fmt标签详解

看到 I18N 就应该想到知识“国际化”, I18N formatting 标签库就是用于在 JSP 页面中做国际化的动作。在该标签库中的标签一共有 12 个,被分为了两类,分别是:

q         国际化核心标签: <fmt:setLocale> 、 <fmt:bundle> 、 <fmt:setBundle> 、 <fmt:message> 、 <fmt:param> 、 <fmt:requestEncoding> 。

q         格式化标签: <fmt:timeZone> 、 <fmt:setTimeZone> 、 <fmt:formatNumber> 、 <fmt:parseNumber> 、 <fmt:formatDate> 、 <fmt:parseDate> 。

下面只选择其中常见的一些标签和属性进行介绍。

9.5.1 用于设置本地化环境的 <fmt:setLocale> 标签

<fmt:setLocale> 标签用于设置 Locale 环境。它的属性和描述如表 9.17 所示:

表 9.17   <fmt:setLocale> 标签属性和说明

属性

描述

value

Locale 环境的指定,可以是 java.util.Locale 或 String 类型的实例

scope

Locale 环境变量的作用范围(可选)

下面看一个示例:

<fmt:setLocale value="zh_TW"/>

表示设置本地环境为繁体中文。

9.5.2 用于资源文件绑定的 <fmt:bundle> 、 <fmt:setBundle> 标签

这两组标签用于资源配置文件的绑定,唯一不同的是 <fmt:bundle> 标签将资源配置文件绑定于它标签体中的显示, <fmt:setBundle> 标签则允许将资源配置文件保存为一个变量,在之后的工作可以根据该变量来进行。

根据 Locale 环境的不同将查找不同后缀的资源配置文件,这点在国际化的任何技术上都是一致的,通常来说,这两种标签单独使用是没有意义的,它们都会与 I18N formatting 标签库中的其他标签配合使用。它们的属性和描述如表 9.18 所示:

表 9.18   <fmt:bundle> 、 <fmt:setBundle> 标签属性和说明

属性

描述

basename

资源配置文件的指定,只需要指定文件名而无须扩展名,二组标签共有的属性

var

<fmt:setBundle> 独有的属性,用于保存资源配置文件为一个变量

scope

变量的作用范围

下面看一个示例

<fmt:setLocale value="zh_CN"/>

<fmt:setBundle basename="applicationMessage" var="applicationBundle"/>

该示例将会查找一个名为 applicationMessage_zh_CN.properties 的资源配置文件,来作为显示的 Resource 绑定。

9.5.3 用于显示资源配置文件信息的 <fmt:message> 标签

用于信息显示的标签,将显示资源配置文件中定义的信息。它的属性和描述如表 9.19 所示:

表 9.19   <fmt:message> 标签属性和说明

属性

描述

key

资源配置文件的“键”指定

bundle

若使用 <fmt:setBundle> 保存了资源配置文件,该属性就可以从保存的资源配置文件中进行查找

var

将显示信息保存为一个变量

scope

变量的作用范围

下面看一个示例:

<fmt:setBundle basename="applicationMessage" var="applicationBundle"/>

<fmt:bundle basename="applicationAllMessage">

         <fmt:message key="userName" />

         <p>

         <fmt:message key="passWord" bundle="${applicationBundle}" />

</fmt:bundle>

该示例使用了两种资源配置文件的绑定的做法,“ applicationMessage ”资源配置文件利用 <fmt:setBundle> 标签被赋于了变量“ applicationBundle ”,而作为 <fmt:bundle> 标签定义的“ applicationAllMessage ”资源配置文件作用于其标签体内的显示。

q         第一个 <fmt:message> 标签将使用“ applicationAllMessage ”资源配置文件中“键”为“ userName ”的信息显示。

q         第二个 <fmt:message> 标签虽然被定义在 <fmt:bundle> 标签体内,但是它使用了 bundle 属性,因此将指定之前由 <fmt:setBundle> 标签保存的“ applicationMessage ”资源配置文件,该“键”为“ passWord ”的信息显示。

9.5.4 用于参数传递的 <fmt:param> 标签

<fmt:param> 标签应该位于 <fmt:message> 标签内,将为该消息标签提供参数值。它只有一个属性 value 。

<fmt:param> 标签有两种使用版本,一种是直接将参数值写在 value 属性中,另一种是将参数值写在标签体内。

9.5.6 用于为请求设置字符编码的 <fmt:requestEncoding> 标签

<fmt:requestEncoding> 标签用于为请求设置字符编码。它只有一个属性 value ,在该属性中可以定义字符编码。

9.5.7 用于设定时区的 <fmt:timeZone> 、 <fmt:setTimeZone> 标签

这两组标签都用于设定一个时区。唯一不同的是 <fmt:timeZone> 标签将使得在其标签体内的工作可以使用该时区设置, <fmt:setBundle> 标签则允许将时区设置保存为一个变量,在之后的工作可以根据该变量来进行。它们的属性和描述如表 9.20 所示:

表 9.20   <fmt:timeZone> 、 <fmt:setTimeZone> 标签 属性和说明

属性

描述

value

时区的设置

var

<fmt:setTimeZone> 独有的属性,用于保存时区为一个变量

scope

变量的作用范围

9.5.8 用于格式化数字的 <fmt:formatNumber> 标签

<fmt: formatNumber > 标 签用于格式化数字。它的属性和描述如表 9.21 所示:

表 9.21   <fmt:formatNumber> 标签属性和说明

属性

描述

value

格式化的数字,该数值可以是 String 类型或 java.lang.Number 类型的实例

type

格式化的类型

pattern

格式化模式

var

结果保存变量

scope

变量的作用范围

maxIntegerDigits

指定格式化结果的最大值

minIntegerDigits

指定格式化结果的最小值

maxFractionDigits

指定格式化结果的最大值,带小数

minFractionDigits

指定格式化结果的最小值,带小数

<fmt:formatNumber> 标签实际是对应 java.util.NumberFormat 类, type 属性的可能值包括 currency (货币)、 number (数字)和 percent (百分比)。

下面看一个示例。

<fmt:formatNumber value="1000.888" type="currency" var="money"/>

该结果将被保存在“ money ”变量中,将根据 Locale 环境显示当地的货币格式。
  1. <fmt:formatNumber value="12" type="currency" pattern="$.00"/> //-- $12.00   
  2.   
  3. <fmt:formatNumber value="12" type="currency" pattern="$.0#"/> //-- $12.0   
  4.   
  5. <fmt:formatNumber value="1234567890" type="currency"/> //-- $1,234,567,890.00(那个货币的符号和当前web服务器的 local 设定有关)   
  6.   
  7. <fmt:formatNumber value="123456.7891" pattern="#,#00.0#"/>// -- 123,456.79   
  8.   
  9. <fmt:formatNumber value="123456.7" pattern="#,#00.0#"/> //-- 123,456.7   
  10.   
  11. <fmt:formatNumber value="123456.7" pattern="#,#00.00#"/>// -- 123,456.70   
  12.   
  13. <fmt:formatNumber value="12" type="percent" /> //-- 1,200% (type 可以是currency、 number、 和percent)。
9.5.9 用于解析数字的 <fmt:parseNumber> 标签

<fmt:parseNumber> 标签用于解析一个数字,并将结果作为 java.lang.Number 类的实例返回。 <fmt:parseNumber> 标签看起来和 <fmt:formatNumber> 标签的作用正好相反。它的属性和描述如表 9.22 所示:

表 9.22   <fmt:parseNumber> 标签属性和说明

属性

描述

value

将被解析的字符串

type

解析格式化的类型

pattern

解析格式化模式

var

结果保存变量,类型为 java.lang.Number

scope

变量的作用范围

parseLocale

以本地化的形式来解析字符串,该属性的内容应为 String 或 java.util.Locale 类型的实例

下面看一个示例。

<fmt:parseNumber value="15%" type="percent" var="num"/>

解析之后的结果为“ 0.15 ”。

9.5.10 用于格式化日期的 <fmt:formatDate> 标签

<fmt:formatDate> 标签用于格式化日期。它的属性和描述如表 9.23 所示:

表 9.23   <fmt:formatDate> 标签属性和说明

属性

描述

value

格式化的日期,该属性的内容应该是 java.util.Date 类型的实例

type

格式化的类型

pattern

格式化模式

var

结果保存变量

scope

变量的作用范围

timeZone

指定格式化日期的时区

<fmt:formatDate> 标签与 <fmt:timeZone> 、 <fmt:setTimeZone> 两组标签的关系密切。若没有指定 timeZone属性, 也可以通过 <fmt:timeZone> 、 <fmt:setTimeZone> 两组标签设定的时区来格式化最后的结果。

9.5.11 用于解析日期的 <fmt:parseDate> 标签

<fmt:parseDate> 标签用于解析一个日期,并将结果作为 java.lang.Date 类型的实例返回。 <fmt:parseDate> 标签看起来和 <fmt:formatDate> 标签的作用正好相反。它的属性和描述如表 9.24 所示:

表 9.24   <fmt:parseDate> 标签属性和说明

属性

描述

value

将被解析的字符串

type

解析格式化的类型

pattern

解析格式化模式

var

结果保存变量,类型为 java.lang.Date

scope

变量的作用范围

parseLocale

以本地化的形式来解析字符串,该属性的内容为 String 或 java.util.Locale 类型的实例

timeZone

指定解析格式化日期的时区

<fmt:parseNumber> 和 <fmt:parseDate> 两组标签都实现解析字符串为一个具体对象实例的工作,因此,这两组解析标签对 var 属性的字符串参数要求非常严格。就 JSP 页面的表示层前段来说,处理这种解析本不属于份内之事,因此 <fmt:parseNumber> 和 <fmt:parseDate> 两组标签应该尽量少用,替代工作的地方应该在服务器端表示层的后段,比如在 Servlet 中。

 

Struts1.x中 bean:write format 属性格式化输出日期,数字(转)

首先我们来看看如何使用format属性进行格式化输出。我们在request中放入当前时间。

request.setAttribute("time", new Date());

在JSP页面中,倘若我们不使用format属性进行格式化,

而直接使用<bean:write name="time" scope="request"/>进行输出,

其输出结果将是:Sun Dec 14 15:38:51 CST 2008 

然而我们通常不习惯于使用这种格式,如果我们希望输出这种格式2008-12-14 15:41:12呢?

很简单!我们将其代码修改成这样:

<bean:write name="time" scope="request" format="yyyy-MM-dd HH:mm:ss"/>

这里format属性中的内容我想不需要解释吧?O(∩_∩)O~

时间可以格式化,那么数字呢?

我们向request中放入圆周率request.setAttribute("n", 3.14159265358979323846)。

若直接使用<bean:write name="n" scope="request"/>进行输出,那结果肯定是原封不动的

3.14159265358979323846了。如果我们希望小数点后保留4位呢?也很简单!代码修改为:

<bean:write name="n" scope="request" format="#.####" />

再想想,如果我们放进去的是3.14呢?我们输出却要小数点后保留4位,不足4位用0补上呢?

用上面的方式我们得到将还是3.14,这又该怎么改呢?It’s very easy!!一个非常小的改动:

<bean:write name="n" scope="request" format="0.0000" />

或者<bean:write name="n" scope="request" format="#.0000" />

最后

以上就是自信花卷最近收集整理的关于在java中 如何让double 型输出整数不显示小数点和其后的0的全部内容,更多相关在java中内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(239)

评论列表共有 0 条评论

立即
投稿
返回
顶部