Тег <fmt:bundle>

JSP 标准标签库Стандартная библиотека тегов JSP

Тег <fmt:bundle> делает указанный ресурсный пакет доступным для тегов <fmt:message>, которые находятся внутри тега <fmt:bundle>. Это может избавить вас от множества шагов по указанию ресурсного пакета для каждого тега <fmt:message>.

Например, следующие два блока <fmt:bundle> выдадут одинаковый результат:

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

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

Формат синтаксиса

<fmt:bundle baseName="<string>" prefix="<string>"/>

Атрибуты

Тег <fmt:bundle> имеет следующие атрибуты:

Attribute Описание Обязательный Значение по умолчанию
basename Задаёт базовое имя загружаемого набора ресурсов Да Отсутствует
префикс Задаёт префикс для атрибута key тега <fmt:message> нет Отсутствует


Пример программы

Наборы ресурсов содержат объекты, зависящие от локали. Наборы ресурсов содержат пары ключ-значение. Когда вашей программе нужны ресурсы, зависящие от локали, вы можете использовать одни и те же ключи для всех локалей, но также можете задавать переведённые значения для локали. Наборы ресурсов помогают предоставлять содержимое, специфичное для локали.

Файл набора ресурсов Java содержит ряд пар ключ-значение. Рассматриваемый нами метод включает создание скомпилированных классов Java, расширяющих класс java.util.ListResourceBundle. Вы должны скомпилировать эти классы и разместить их в CLASSPATH вашего веб-приложения.

Давайте определим набор ресурсов по умолчанию:

package com.example;

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, затем разместите его там, где CLASSPATH вашего веб-приложения сможет его найти. Теперь вы можете использовать JSTL для отображения этих трёх чисел, вот так:

<%@ 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.example.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

Измените его так, чтобы у него не было атрибута prefix:

<%@ 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.example.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>и<fmt:setBundle>, чтобы получить больше информации.


JSP 标准标签库Стандартная библиотека тегов JSP

Другие расширения