位置:首頁 > Java技術 > JSP教學 > JSTL <fmt:bundle>標簽

JSTL <fmt:bundle>標簽

<fmt:bundle>標記將指定的軟件包中,可在邊界<fmt:bundle>之間發生的所有<fmt:message>標記到</fmt:bundle>標記。這樣可以節省不必指定為每個<fmt:message>標記的資源包。

例如,下麵的兩個<fmt:bundle>塊會產生同樣的輸出:


<fmt:bundle basename="com.yiibai.Example">
    <fmt:message key="count.one"/>
</fmt:bundle>

<fmt:bundle basename="com.yiibai.Example" prefix="count.">
    <fmt:message key="title"/>
</fmt:bundle>

屬性:

<fmt:bundle>標記具有以下屬性:

屬性 描述 必須 默認
basename Specifies the base name of the resource bundle that is to be loaded. Yes None
prefix Value to prepend to each key name in <fmt:message> subtags No None

例子:

資源包包含特定於語言環境的對象。資源包包含鍵/值對。當程序需要特定於語言環境的資源,把所有的共同所有的語言環境中的密鑰,但可以有特定的語言環境轉換的值。資源包有助於提供內容具體的語言環境。

Java資源包文件包含一係列關鍵到字符串的映射。我們專注於該方法涉及到創建編譯的Java類來擴展java.util.ListResourceBundle類。你必須編譯這些類文件,並提供給您的Web應用程序的classpath中可用。

讓我們定義一個默認的資源包,如下所示:

package com.yiibai;

import java.util.ListResourceBundle;

public class Example_En extends ListResourceBundle {
  public Object[][] getContents() {
    return contents;
  }
  static final Object[][] contents = {
  {"count.one", "One"},
  {"count.two", "Two"},
  {"count.three", "Three"},
  };
}

讓我們編譯以上的類Example.class,並使其在Web應用程序的類路徑中。現在,可以使用下麵的JSTL標記來顯示三個號碼如下:

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>
<html>
<head>
<title>JSTL fmt:bundle Tag</title>
</head>
<body>

<fmt:bundle basename="com.yiibai.Example" prefix="count.">
   <fmt:message key="one"/><br/>
   <fmt:message key="two"/><br/>
   <fmt:message key="three"/><br/>
</fmt:bundle>

</body>
</html>

這將產生以下結果:

One 
Two 
Three

試試上麵的例子不帶前綴,如下所示:

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>
<html>
<head>
<title>JSTL fmt:bundle Tag</title>
</head>
<body>

<fmt:bundle basename="com.yiibai.Example">
   <fmt:message key="count.one"/><br/>
   <fmt:message key="count.two"/><br/>
   <fmt:message key="count.three"/><br/>
</fmt:bundle>

</body>
</html>

這也將產生以下結果:

One 
Two 
Three

查看<fmt:setLocale> 和<setBundle>標簽,了解完整的概念。