Java的Struts框架中配置国际化的资源存储的要点解析

Java的Struts框架支持使用国际化(i18n)来为不同语言的用户提供不同的用户界面。在Struts中配置国际化的资源存储主要包括三个要点,分别是资源文件的命名规则、资源文件的组织结构以及使用资源文件的方法。

  1. 资源文件的命名规则

Struts框架支持使用.properties文件来存储国际化资源信息,文件的名称要遵循一定的命名规则。文件名由以下三部分组成:
- 基础名称:通常是对应于Action、Form或JSP页面的文件名,不包含任何语言或地区的信息。
- 语言/国家:语言和国家是用下划线分隔开的,如_zh_CN表示中文(中国)。如果只有语言没有国家,则只需使用语言名称,如_fr表示法文。
- 文件扩展名:通常使用.properties作为文件扩展名。

因此,一个资源文件的完整名称可能是如下形式:messages_zh_CN.properties

  1. 资源文件的组织结构

Struts框架要求将不同语言/国家的资源文件放在对应的目录下。目录的命名是以语言代码(不含国家和文件扩展名)命名的,如messages_fr表示法文资源文件目录。应用程序的根目录通常是“/WEB-INF/classes”,因此存放资源文件的路径可能是:“/WEB-INF/classes/messages_zh_CN.properties”或“/WEB-INF/classes/messages_fr.properties”。

  1. 使用资源文件的方法

在Struts框架中,使用国际化资源信息的方法是通过ResourceBundle类实现的。ResourceBundle类是Java I18N API的核心类之一,它通过动态加载不同的资源文件来支持不同的语言/国家。

在Struts框架中,通常将用于存储国际化资源信息的.properties文件放置在一个目录中(一般是/resources目录),以便每个Action或JSP页面都可以使用它们。然后,在Action或JSP页面中,我们可以使用以下代码获取对应的资源信息:

ResourceBundle rb = ResourceBundle.getBundle("messages", Locale.getDefault());
String userNameLabel = rb.getString("username.label");

上述代码中,“messages”代表资源文件的基础名称,“Locale.getDefault()”获取当前用户的语言和国家信息。此外,在.properties文件中,可以通过键-值对的形式来存储对应的资源信息,如下面的示例:

username.label=用户名
password.label=密码
signin.button=登录

这样,我们就可以通过rb.getString()方法来获取.properties文件中对应键所对应的值。

示例1:在Struts中使用国际化资源信息来配置表单字段的标签

在Action中配置如下代码:

public void reset(ActionMapping mapping, HttpServletRequest request) {
  super.reset(mapping, request);
  ResourceBundle rb = ResourceBundle.getBundle("messages", Locale.getDefault());
  mapping.findFormBean(mapping.getParameter()).getDynaClass().getDynaProperties();
  FormPropertyConfig[] fields = 
    mapping.findFormBean(mapping.getParameter()).getDynaClass().getDynaProperties();

  for (int i = 0; i < fields.length; i++) {
    String labelKey = fields[i].getLabel();
    if (labelKey != null) {
      String label = rb.getString(labelKey);
      fields[i].setLabel(label);
   }
  }
}

示例2:在Struts中使用国际化资源信息来配置页面标题

在JSP页面中配置如下代码:

<%@ taglib uri="http://jakarta.apache.org/struts/tags-tiles" prefix="tiles" %> 
<tiles:put name="title" value="<bean:message key='page.title'/>" />

在.properties文件中,增加如下配置:

page.title=我的页面

这样,我们就可以通过配置.tiles文件,来将页面名称和title匹配,并最终动态生成HTML文档。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Java的Struts框架中配置国际化的资源存储的要点解析 - Python技术站

(0)
上一篇 2023年5月20日
下一篇 2023年5月20日

相关文章

  • Java String类正则操作示例

    Java String类正则操作示例 简介 Java中String类提供了很多方法进行正则表达式的操作。通过使用正则表达式,我们可以在字符串中匹配特定的字符或者模式,进行替换或者搜索等操作。在这篇文章中,我们将学习String类操作正则表达式的方法,并且提供两个实际的示例说明。 String类操作正则表达式的方法 Java String类提供了以下方法来操作…

    Java 2023年5月27日
    00
  • 记一次在idea离线使用maven问题(推荐)

    下面是使用IDEA离线使用Maven的完整攻略: 1. 环境准备 首先,将Maven压缩包解压到本地,例如解压到D:\maven-3.6.3目录下,并设置好环境变量MAVEN_HOME和PATH,具体可以参考Maven 安装 | 菜鸟教程 (runoob.com)。 然后,进入IDEA的Settings(或者File -> Settings),在Bui…

    Java 2023年5月19日
    00
  • JavaWeb之Ajax的基本使用与实战案例

    JavaWeb之Ajax的基本使用与实战案例 Ajax(Asynchronous JavaScript And XML)即异步JavaScript和XML技术,通过在后台与服务器交换数据并更新部分网页实现页面无刷新的异步更新。 Ajax的基本语法 使用Ajax时可以通过XMLHttpRequest对象与后台进行数据交互,其中涉及到的基本语法如下: // 创建…

    Java 2023年5月26日
    00
  • java实现简单的小超市程序

    Java实现简单的小超市程序攻略 需求分析 在实现小超市程序之前,我们需要了解程序的需求。假设我们需要实现以下功能: 商品信息的录入和展示 商品的购买和结算 支持会员折扣和促销活动 设计思路 在了解需求之后,我们再来规划一下小超市程序的设计思路。 商品实体类 首先我们需要设计一个商品的实体类,包括商品名称、单价、库存、条形码等属性。 超市类 我们还需要设计一…

    Java 2023年5月18日
    00
  • 通过JDK源码角度分析Long类详解

    通过JDK源码角度分析Long类详解 介绍Long类 Long类是java.lang包下的一个类,它是用来表示64位长整型数字的。在实际开发中,经常使用Long类来处理需要存储大整数的应用场景。 Long类的声明 public final class Long extends Number implements Comparable<Long> …

    Java 2023年5月26日
    00
  • springSecurity实现简单的登录功能

    下面我将为您详细讲解“springSecurity实现简单的登录功能”的完整攻略。 1. 添加依赖 Spring Security是Spring的一个子项目,我们只需要在pom.xml文件中添加以下依赖即可: <dependency> <groupId>org.springframework.security</groupId&…

    Java 2023年5月20日
    00
  • java提取json中某个数组的所有值方法

    下面是Java提取JSON中某个数组的所有值的攻略: 将JSON字符串转换为Java对象 首先,我们需要将JSON字符串转换为Java对象,在Java中可以使用GSON、Jackson等JSON库来完成这个过程。以GSON为例,使用它的fromJson()方法可以将JSON字符串转换为Java对象,示例代码如下: Gson gson = new Gson()…

    Java 2023年5月26日
    00
  • 【SSM】一、了解Sping 框架

    〇、Maven 0.1 什么是Maven? Apache Maven is a software project management and comprehension tool. Based on the concept of a project object model (POM), Maven can manage a project’s build…

    Java 2023年4月25日
    00
合作推广
合作推广
分享本页
返回顶部