关于javafmt标签的信息

博主:adminadmin 2022-12-02 06:06:06 48

本篇文章给大家谈谈javafmt标签,以及对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

关于java中的fmt标签的用法??

关于jstl中的fmt标签2007-07-12 11:57今天看spring的messeagesource时查到了关于国际化的问题

spring中applicationContext虽然继承messeagesource,但它只是在配置文件中查找messagesource的实现bean,并以它为消息源,调用其指向的消息处理方法getmessage等

关于fmt的一些情况找了网页介绍的可以的如下

quto:

如果从 web 应用程序本身的用户界面中选择了地区设置,然后使用 fmt: setLocale进行设置,那么就可以假设该应用程序确实支持此地区设置。 另一方面,如果没有使用 fmt: setLocale 并且 JSTL必须从 Accept-Language 报头中的地区设置列表中找到一个支持的地区设置,那么情况会变得更复杂。

要决定哪个地区设置是被支持的,JSTL 将参考该应用程序所使用的资源束。 有两种操作可用于访问资源束: 和 。 它们的基本功能是相同的:它们查询一个资源束并创建一个“本地化环境”,在这个“本地化环境”中包含了对该资源束和用于请求该资源束的地区设置的引用。

fmt:bundle 和 fmt: setBundle操作所使用的资源束查询允许多次请求地区设置(这样它就可以处理由 Accept-Language 报头提供的列表),并使用由 web应用程序定义的备用(fallback)地区设置。 如果使用 fmt:setLocale 操作设置地区,那么 fmt:bundle 和 fmt:setBundle操作将请求用于该地区设置的束,或者,如果不成功的话,将请求用于备用地区设置的束。 如果没有使用fmt:setLocale,随后的操作将请求用于由 Accept-Language报头提供的地区设置和备用地区设置,直到请求成功。在每种情况下,基本查询(查询束的基本名称和一个请求地区设置)将为请求地区设置本身搜索一个资源束,随后搜索更简单的地区设置(首先从请求地区设置中舍弃变量,然后舍弃国家组件)。 如果全部的请求地区设置以及备用地区设置的查询都失败,那么将使用基础束。

以下是一些例子。 让我们假设某个应用程序拥有用于 en、zh_CN、zh_TW、ja 和 ko 的束。 备用地区设置被设置为 en。 没有使用 标记。 下表显示最终本地化环境的束和地区设置(用于一些请求地区设置列表):

被请求的地区设置

结果束

结果地区设置

zh_SG、zh_CN

zh_CN

zh_CN

zh、ja

ja

ja

es_MX

en

en

en_US

en

en_US

ja、zh_CN

ja

ja

ResourceBundle 类的行家会注意到,JSTL 操作所使用的查询策略与 ResourceBundle 所使用的查询策略是不同的。ResourceBundle 使用的策略只接受一个请求地区设置,这不足以处理由 Accept-Language报头所提供的地区设置列表,并且它会恢复 Java 运行环境的默认地区设置,此默认地区设置与 web应用程序和其用户并不相关,使用它将导致不可移植性。

那么,为什么查询资源束时存在两种不同的操作呢? 它们的区别在于它们使用的方法:fmt:bundle标记提供了一个用于嵌套标记的环境,而 fmt: setBundle操作将最终本地化环境存储在一个变量中,此变量可以在相同页面中被后继操作访问,并且可以被其他页面中的操作所访问(这取决于该变量的范围)。

fmt:message 操作是一种利用本地化环境的 JSTL 标记。 它最简单的形式是,它从一个本地化环境的资源束中为一个指定的键获取一条信息并将该信息插入生成的页面中。 下面例子显示了它的不同用法:

fmt:setBundle basename="Errors" var="errorBundle" /

fmt:bundle basename="Messages"

%-- Localization context established by fmt:bundle tag --%

fmt:message key="greeting" /

p

%-- Localization context established by fmt:setBundle tag --%

fmt:message key="emptyField" bundle="${errorBundle}" /

/fmt:bundle

其次,为什么有一个请求地区设置与本地化环境相关联? 这个地区设置是 JSTL将格式化标记限制到应用程序所支持的语言范围内的方法,这样展现在读者面前的页面语言将完全统一。 嵌套于 fmt:bundle标记中的格式化操作使用该标记的本地化环境来确定它们应该使用的地区设置。 例如,让我们观察下面的页面片断:

jsp:useBean id="now" class="java.util.Date" /

fmt:formatDate value="${now}" timeStyle="long" dateStyle="long" /

p

fmt:bundle basename="Messages"

fmt:formatDate value="${now}" timeStyle="long" dateStyle="long" /

/fmt:bundle

如果 HTTP Accept-Language 地区设置是 fr 和 en,并且基础的 Java 运行环境对这两种语言的日期格式都支持(但 web 应用程序的 Messages 束只存在于 en),那么第一个日期采用法文格式,而第二个则采用英文格式。因此,页面设计者可以决定是使用统一的语言还是通过选择适当的标记嵌套来利用所有现有的本地化信息。

最后,为什么本地化环境使用请求地区设置而不使用由资源束找到的地区设置? 答案是,这样可以避免丢失重要的信息,某些格式标记可能需要这些信息。很多应用程序不能区分相同语言中不同变量之间的区别,而且只提供(例如)英文资源束,期望着这些文本在英国、澳大利亚和新加坡都能被同样理解。然而对于日期格式,国家是很关键的——对于英国读者来说,“2/6/02”表示 “ 2002 年 6 月 2日”,但对于习惯美国规范的读者来说,则表示“2002 年 2 月 6 日”。所以,在很多情况下,如果使用了请求地区设置(而不是资源束地区设置),则国家信息将会被保留。

JSTL标签

根据功能可以分为五大类:

1、核心标签

2、格式化标签

3、SQL 标签

4、XML 标签

5、JSTL 函数

一、核心标签

 1、c:out /标签会自动忽略XML标记字符,所以它们不会被当做标签来处理。标签用来显示一个表达式的结果,与%= %作用相似,它们的区别就是c:out标签可以直接通过"."操作符来访问属性。

c:out标签有如下属性:

 scope 的作用域大小依次为:

application session request page(默认)

jsp 处理变量的作用域先后依次为:

page(默认) - request - session - application

2、c:set标签用于设置变量值和对象属性。

3、c:remove标签用于移除一个变量。

4、c:catch 标签主要用来处理产生错误的异常状况,并且将错误信息储存起来。

5、c:choose标签与Java switch语句的功能一样,用于在众多选项中做出选择。

switch语句中有case,而c:choose标签中对应有c:when,switch语句中有default,而c:choose标签中有c:otherwise。

c:when标签的属性如下:

6、c:import标签提供了所有jsp:include行为标签所具有的功能,同时也允许包含绝对URL。

c:import标签有如下属性:

7、c:forEach标签用作迭代一个集合中的对象。

语法格式:

c:forTokens

    items="string"

    delims="string"

    begin="int"

    end="int"

    step="int"

    var="string"

    varStatus="string"

c:forEach标签有如下属性:

c:forEach varStatus 属性

  current : 当前这次迭代的(集合中的)项

  index : 当前这次迭代从 0 开始的迭代索引

  count : 当前这次迭代从 1 开始的迭代计数

  first : 用来表明当前这轮迭代是否为第一次迭代的标志

  last : 用来表明当前这轮迭代是否为最后一次迭代的标志

  begin : 属性值

  end : 属性值

  step : 属性值

例如:

c:foreach  items="${sessionScope.userList}"  var="userItem"  begin="1"  end="10"  step="3"  varStatus="userStatus" XXX /c:foreach

实例解读:  对 session 对象存储的 userList 集合对象进行遍历,每次访问的项暂时存储在 userItem 变量中,从索引 1 开始至索引 10 进行访问,但不是依次访问,每隔 3 个元素访问一次。每次访问项的状态相关值由 userStatus 对象暂存。

c:foreach 的 varStatus 属性暂存项的相关状态属性,可由 EL 表达式引用。

${userStatus.index} 此项的索引,从0开始

${userStatus.count} 此项的计数序号,从1开始

${userStatus.first} 此项是否是第一项,布尔值

${userStatus.last} 此项是否是最后一项,布尔值

${userStatus.begin} 此次迭代的起始索引,对应c:foreach中begin属性值

${userStatus.end} 此次迭代的终止索引,对应c:foreach中end属性值

${userStatus.step} 此次迭代的跳跃步伐,对应c:foreach中step属性值 

8、c:forTokens标签通过指定分隔符将字符串分隔为一个数组然后迭代它们。

c:forTokens

    items="string"

    delims="string"

    begin="int"

    end="int"

    step="int"

    var="string"

    varStatus="string"

9、c:url标签将URL格式化为一个字符串,然后存储在一个变量中。

这个标签在需要的时候会自动重写URL。

var属性用于存储格式化后的URL。

c:url标签只是用于调用response.encodeURL()方法的一种可选的方法。它真正的优势在于提供了合适的URL编码,包括c:param中指定的参数。

c:url标签有如下属性:

10、c:param标签用于在c:url标签中指定参数,而且与URL编码相关。

在c:param标签内,name属性表明参数的名称,value属性表明参数的值。

语法格式:

c:param name="string" value="string"/

c:param标签有如下属性:

11、c:redirect标签通过自动重写URL来将浏览器重定向至一个新的URL,它提供内容相关的URL,并且支持c:param标签。

c:redirect标签有如下属性:

二、格式化标签

JSTL格式化标签用来格式化并输出文本、日期、时间、数字。引用格式化标签库的语法如下:

%@ taglib prefix="fmt uri="" %

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

语法格式:

fmt:formatNumber

  value="string"

  type="string"

  pattern="string"

  currencyCode="string"

  currencySymbol="string"

  groupingUsed="string"

  maxIntegerDigits="string"

  minIntegerDigits="string"

  maxFractionDigits="string"

  minFractionDigits="string"

  var="string"

  scope="string"/

fmt:formatNumber标签有如下属性:

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

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

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

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

2、fmt:formatDate标签用于使用不同的方式格式化日期。

语法格式

语法格式

fmt:formatDate

  value="string"

  type="string"

  dateStyle="string"

  timeStyle="string"

  pattern="string"

  timeZone="string"

  var="string"

  scope="string"/

fmt:formatDate标签有如下属性:

fmt:formatDate 标签格式模式:

三、JSTL函数

JSTL包含一系列标准函数,大部分是通用的字符串处理函数。引用JSTL函数库的语法如下:

%@ taglib prefix="fn"uri="" %

1、fn:contains()函数用于确定一个字符串是否包含指定的子串

c:if test="${fn:contains(原始字符串, 要查找的子字符串)}"

.../c:if

如何使java中double类型不以科学计数法表示

可以使用java.text.DecimalFormat ,格式化数字,比如

double a = 2.3659874;

//小数格式化,引号中的0.000表示保留小数点后三位(第四位四舍五入)

DecimalFormat df = new DecimalFormat("0.000");

String num = df.format(a);

System.out.println(num);

//输出结果就是 2.366

javafmt标签的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于、javafmt标签的信息别忘了在本站进行查找喔。

The End

发布于:2022-12-02,除非注明,否则均为首码项目网原创文章,转载请注明出处。