如何在JSP中使用资源包?
<fmt:bundle>标签会使指定的资源包可用于<fmt:message>标签之间出现的全部<fmt:message>标签。这样,您无需为每个<fmt:message>标签指定资源包。
例如,以下两个<fmt:bundle>块将产生相同的输出:
<fmt:bundle basename = "com.tutorialspoint.Example"> <fmt:message key = "count.one"/> </fmt:bundle> <fmt:bundle basename = "com.tutorialspoint.Example" prefix = "count."> <fmt:message key = "title"/> </fmt:bundle>
属性
<fmt:bundle>标签具有以下属性:
属性 | 描述 | 必需 | 默认值 |
---|---|---|---|
basename | 指定要加载的资源包的基本名称。 | 是 | 无 |
Prefix (前缀) | 附加到<fmt:message>子标签中每个键名称的值 | 否 | 无 |
示例
资源包包含特定于区域设置的对象。资源包包含**键/值**对。当您的程序需要特定于区域设置的资源时,您保留所有区域设置通用的所有键,但您可以拥有特定于区域设置的翻译值。资源包有助于向区域设置提供特定内容。
Java资源包文件包含一系列**键到字符串的映射**。我们关注的方法涉及创建扩展**java.util.ListResourceBundle**类的已编译Java类。您必须编译这些类文件并使它们可用于Web应用程序的类路径。
让我们定义一个默认资源包,如下所示:
package com.tutorialspoint; 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应用程序的CLASSPATH中可用。现在,您可以使用以下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.tutorialspoint.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.tutorialspoint.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
广告