jstl <fmt:bundle>標籤

2019-10-16 22:12:11

<fmt:bundle>標籤將使指定的包可用於在<fmt:bundle></fmt:bundle>標籤之間發生的所有<fmt:message>標籤。 因此,不需要為每個<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 指定要載入的資源系結的基本名稱。
prefix <fmt:message>子標籤中為每個鍵名稱新增的值

範例

資源系結包含區域特定的物件。 資源系結包含鍵/值對。 當程式需要特定於區域設定的資源時,可以將所有鍵保留在所有區域設定中,但可以使用指定區域設定的翻譯值。 資源系結有助於向區域設定提供特定的內容。

Java資源包檔案包含一系列鍵到字串的對映。 我們關注的方法呼叫涉及建立擴充套件java.util.ListResourceBundle類的Java類。 必須編譯這些類檔案並使其可用於Web應用程式的類路徑。

下面來看如何定義一個預設資源系結如下 -

檔案:Example_Cn.java -

package com.yiibai;

import java.util.ListResourceBundle;

public class Example_Cn extends ListResourceBundle {
    public Object[][] getContents() {
        return contents;
    }

    static final Object[][] contents = { { "count.one", "一個" }, { "count.two", "兩個" }, { "count.three", "三個" }, };
}

編譯上面的Example_Cn類,並使其在Web應用程式的CLASSPATH中可用。現在可以使用以下JSTL標籤來顯示三個數位,如下所示:

檔案:fmt_bundle.jsp -

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ 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標籤</title>
   </head>

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

這將產生以下結果 -

一個
兩個
三個

嘗試上面不使用字首的範例,如下 -

檔案:fmt_bundle2.jsp -

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ 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標籤</title>
   </head>

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

這將產生以下結果 -

一個
兩個
三個

可通過檢視<fmt:setLocale<setBundle標籤以了解完整的概念。