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日

相关文章

  • jdk中动态代理异常处理分析:UndeclaredThrowableException

    当使用 JDK 动态代理时,如果目标方法抛出一个未在代理接口上声明的异常时,会发生 UndeclaredThrowableException 异常。这个异常用于包装仅在运行时可知的受检查异常或 “错误”(Error)类型的异常(例如 java.io.IOException 或 java.lang.OutOfMemoryError),从而响应于在虚拟机集线器(…

    Java 2023年5月27日
    00
  • 详解Spring Boot 异步执行方法

    下面是详解SpringBoot异步执行方法的完整攻略。 1. 什么是异步执行? 在程序执行中,如果某个方法耗时比较长,会阻塞当前线程,导致整个程序变得缓慢。为了解决这个问题,我们可以采用异步执行的方式,将耗时操作交给另一个线程去执行,这样就不会阻塞当前线程,提高程序执行效率。 2. SpringBoot异步执行方法的实现方式 SpringBoot提供了一种简…

    Java 2023年5月15日
    00
  • feign post参数对象不加@RequestBody的使用说明

    关于“feign post参数对象不加@RequestBody的使用说明”,我将分以下几个方面进行详细讲解: @RequestBody注解的作用 不加@RequestBody的使用说明 示例说明 小结 1. @RequestBody注解的作用 首先,我们需要了解@RequestBody注解的作用。该注解用于将请求体中的参数绑定到方法参数上。即,使用该注解后,…

    Java 2023年5月23日
    00
  • 常见的Java性能调优工具有哪些?

    Java性能调优是提高应用程序性能和并发运行效率的必要手段,为了提高Java应用程序的性能,需要使用一些专业的性能调优工具。 常见的Java性能调优工具有以下几种: JProfiler:JProfiler是一种动态的Java代码性能分析工具,主要特点是高效和低侵入性,可以帮助开发人员快速定位Java应用程序的性能瓶颈,并提出优化建议。使用JProfiler进…

    Java 2023年5月11日
    00
  • 手写java性能测试框架的实现示例

    接下来我将为你详细讲解如何实现一个手写的Java性能测试框架,包括两条实例说明。 什么是性能测试框架 首先,我们需要了解性能测试框架的概念。性能测试旨在通过模拟用户的操作、测试性能、并发等方面,来测试系统的稳定性和可靠性。而性能测试框架就是为了让我们更加方便地进行性能测试而存在的,它通常会提供一系列的方法来帮助我们轻松地对系统性能进行测试和分析。 手写Jav…

    Java 2023年5月19日
    00
  • Java方法的可变参数类型实例分析

    首先我们需要了解什么是Java方法的可变参数类型。 Java方法的可变参数类型 Java方法的可变参数类型指的是:在方法的参数列表中,允许最后一个参数为可变参数,即不确定数量的参数。在方法中,可变参数被声明为数组类型,在调用方法时可以传入任意数量的参数。 可变参数的语法为: 修饰符 返回值类型 方法名(参数类型… 参数名) { // 方法体 } 其中的参…

    Java 2023年5月26日
    00
  • javax.validation自定义日期范围校验注解操作

    关于“javax.validation自定义日期范围校验注解操作”的完整攻略,我将从以下三个方面进行详细讲解: 什么是javax.validation自定义注解? 如何实现自定义日期范围校验注解? 示例演示 1. 什么是javax.validation自定义注解? javax.validation是Java中的一种验证框架,它提供了各种验证约束注解,包括@N…

    Java 2023年5月20日
    00
  • java中Hibernate的状态总结

    Java中Hibernate的状态总结 Hibernate是Java中广泛使用的ORM(对象关系映射)框架之一,其核心原则是使用Java对象来映射数据库表格。在使用Hibernate时,需要注意对象实例所处的状态,本文将对Hibernate中的状态进行总结。 Hibernate对象状态 下面是Hibernate对象可能出现的几种状态: Transient状态…

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