Тег <fmt:bundle>
Стандартная библиотека тегов 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>, чтобы получить больше информации.
Другие расширения