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>標簽,了解完整的概念。