重温经典struts1之国际化(I18N)

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

前言

拿Google网站来举例,在世界上不同国家和地区,登陆Google网站,网站上都会显示本国家语言,它是怎么做到的,就是我们今天要讲的:国际化,也称i18n
i18n是Internationalization的简称,是由第一个字母(i)+单词的字母数(18)+最后一个字母(n)组成的。
简单的说,按照操作系统或浏览器设置的语言,切换各语言显示
接下来,我们学习下,struts是怎么实现国际化(I18N)的


需求

如下图所示,
写一个login页面
中文环境下,各组件名显示中文(用户名,密码和登陆)
英文环境下,各组件名显示英文(User name,Password和Login)

在这里插入图片描述

在这里插入图片描述

步骤

  • struts-config.xml文件中添加message-resources标签
    代码如下:
</struts-config>中间略<message-resources parameter="resources.MessageResources" />中间略
</struts-config>

属性parameter的值是
src目录下的包名(resources). 国际化(语言)资源文件名(MessageResources)
包名(resources)可省略
示例图如下:
在这里插入图片描述
补充:struts-config.xml文件中的action标签里配置validate属性时,message-resources标签是必须配置项,否则,struts会抛出异常

  1. 定义国际化(语言)资源文件
    文件名必须以struts-config.xml文件中message-resources标签的parameter属性配置的值开头+国家语言和地区

< message-resources parameter=“resources.MessageResources” />

各资源文件名如下:
・MessageResources_en_US.properties
       显示英文内容用
・MessageResources_zh_CN.properties
       显示中文内容用
・MessageResources.properties
       当浏览器没有设置任何语言选项时,默认显示的内容,内容是中文就显示中文,是英文显示英文

文件内容是key=value的map数据结构
MessageResources_en_US.properties内容如下:

login.form.filed.username=User name
login.form.filed.password=Password
login.form.button.login=Login

MessageResources_zh_CN.properties内容如下:

login.form.filed.username=用户
login.form.filed.password=密码
login.form.button.login=登录

MessageResources.properties内容如下:

login.form.filed.username=User name
login.form.filed.password=Password
login.form.button.login=Login
  1. jsp文件中读取国际化(语言)资源文件内容
    具体的实现,struts已经为我们提供(struts启动时已经将国际化(语言)资源文件内容读取到内存中),
    我们只需使用bean标签,按照key就可取到对应的值
    使用bean标签,代码如下

<bean:message key=“login.form.filed.username”/>

login.form.filed.usernam是国际化(语言)资源文件中的key

login.jsp代码如下:

<%@ page language="java" contentType="text/html; charset=utf-8"pageEncoding="utf-8"%>
<%@ taglib uri="http://struts.apache.org/tags-logic" prefix="logic"%>
<%@ taglib uri="http://struts.apache.org/tags-bean" prefix="bean"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Insert title here</title>
</head>
<body><logic:notEmpty name="msg"><font color="red"> <bean:write name="msg"/></font></logic:notEmpty><form action="login.do" method="post"><bean:message key="login.form.filed.username"/>:<input type="text" name ="username"><br><bean:message key="login.form.filed.password"/>: <input type="password" name ="password"><br><input type="submit" value="<bean:message key="login.form.button.login"/>"></form></body>
</html>

其他的代码(action,formbean等),可以参看<重温经典struts1之xxx>系列的文章

总结

运行效果在文章开头需求中的图可以看到,以上就是struts1实现login页面国际化(I18N)的一个简单示例,欢迎留言交流,下篇见。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/292977.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Android平台RTSP流如何添加动态水印后转推RTMP或轻量级RTSP服务

技术背景 我们在对接外部开发者的时候&#xff0c;遇到这样的技术诉求&#xff0c;客户用于地下管道检测场景&#xff0c;需要把摄像头的数据拉取过来&#xff0c;然后叠加上实时位置、施工单位、施工人员等信息&#xff0c;然后对外输出新的RTSP流&#xff0c;并本地录制一份…

重温经典struts1之自定义类型转换器及注册的两种方式(Servlet,PlugIn)

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 前言 Struts的ActionServlet接收用户在浏览器发送的请求&#xff0c;并将用户输入的数据&#xff0c;按照FormBean中定义的数据类型&#xff0c;赋值给FormBean中每个变量&a…

C++的泛型编程—模板

目录 一.什么是泛型编程&#xff1f; ​编辑 ​编辑 二.函数模板 函数模板的实例化 当不同类型形参传参时的处理 使用多个模板参数 三.模板参数的匹配原则 四.类模板 1.定义对象时要显式实例化 2.类模板不支持声明与定义分离 3.非类型模板参数 4.模板的特化 函数模板…

限量25台,川崎亮相Ninja ZX-10RR冬季限量款

最近川崎发布了自家ZX-10RR的超级限量版&#xff0c;官方称之为冬季测试版&#xff0c;之前也有一些车型推出过冬季测试版&#xff0c;通常是在年底推出&#xff0c;因为这个时候北半球都是非常寒冷的冬天。 不过这台ZX-10RR冬季测试版&#xff0c;并不仅仅只是限量那么简单&am…

【已解决】告别CorelDraw打开CDR、复制粘贴图片卡顿问题,原来CDR卡顿是前辈们的错误习惯造成的

多年前我是 CorelDRAW 的小白&#xff0c;从 CDR 9 一直用到 CDR X4 版。在使用 CorelDRAW 过程中最令人诟病的问题就是&#xff1a;卡顿&#xff01; 打开 CDR 文件卡顿&#xff01; 复制、粘贴图片卡顿&#xff01; 区区十几MB的 CDR 文件&#xff0c;凭什么打开它要卡顿几…

如何开发一套家政预约小程序,家政系统有哪些功能?

家政服务小程序保洁上门预约维修 同城师傅入驻抢单派单平台开发 家政保洁预约小程序的功能与特点&#xff1b; 一、功能介绍 1. 小程序与公众号无缝对接&#xff0c;支持员工预约、项目预约两种方式&#xff0c;用户可随时在线预约&#xff0c;享受便捷服务。 2. 商家在预约小程…

CloudPulse:一款针对AWS云环境的SSL证书搜索与分析引擎

关于CloudPulse CloudPulse是一款针对AWS云环境的SSL证书搜索与分析引擎&#xff0c;广大研究人员可以使用该工具简化并增强针对SSL证书数据的检索和分析过程。 在网络侦查阶段&#xff0c;我们往往需要收集与目标相关的信息&#xff0c;并为目标创建一个专用文档&#xff0c…

C++(多态)

目录 前言&#xff1a; 1.多态的概念 2.多态的定义及实现 2.1多态的构成条件 2.2析构函数的重写&#xff08;基类与派生类析构函数名字不同&#xff09; 2.3虚函数重写 2.4C override 和final 2.5 重载、覆盖&#xff08;重写&#xff09;隐藏&#xff08;重定义&#…

Docker 学习总结(80)—— 轻松驾驭容器,玩转 LazyDocker

前言 LazyDocker 是一个用户友好的命令行工具,简化了 Docker 的管理。它能够通过单一命令执行常见的 Docker 任务,如启动、停止、重启和移除容器。LazyDocker 还能轻松查看日志、清理未使用的容器和镜像,并自定义指标。 简绍 LazyDocker 是一个用户友好的 CLI 工具,可以轻…

常见的弧形导轨有哪些

弧形导轨又叫圆弧导轨、滚轮圆弧导轨&#xff0c;是通过v形滚轮在圆弧v型导轨表面滚动&#xff0c;作圆周运动&#xff0c;运用广泛&#xff1a;数控机床、包装机械、输送设备、医疗器械、航空航天等设备&#xff1b;弧形导轨也分几种&#xff0c;常见的弧形导轨有以下几种&…

【Linux】编辑、查看和搜索文件

大多数 Linux 发行版不包含真正的 vi;而是自带一款高级替代版本&#xff0c;叫做 vim(它是“vi improved”的简写)由 Bram Moolenaar 开发的&#xff0c;vim 相对于传统的 Unix vi 来说&#xff0c;取得了实质性进步。 启动和退出 vim 使用vim可以启动&#xff0c;如命令行输…

MPI安装与程序设计

MPI MPI&#xff08;Message Passing Interface&#xff09;是一种用于编写并行程序的标准和库&#xff0c;用于在分布式内存系统中进行消息传递和并行计算。MPI提供了一组函数和语义&#xff0c;用于在多个进程之间进行通信和同步&#xff0c;以实现并行计算和并行任务的协调…