国际化与本地化:
Java 语言中使用Unicode字符集,为我们建立国际化的Web应用奠定了基础;
国际化:就是使程序不做任何的修改情况下,就可以在不同的国家或地址和不同语言环境下,按照当地的语言和格式习惯显示字符;I18N
本地化:一个国际化程序,当它运行在本地机器上时,需要根据本地机器的语言和地区设置显示相应的字符,这个过程为L10N;
两个主要类:
java.util.Locale类 java.util.ResourceBundle 抽象类
Locale类:两种常用构造方法:
public Locale(String languages)
public Locale(String language,String country)
language : 表示语言,取值为 ISO-639 定义的小写的、两个字母组成的语言代码;
country :表示国家或地区,取值由:ISO-3166 定义的大写的、两个字母组成的代码;
ISO-639 常用代码: ISO-3166 国家和地区代码
Chinese zh China CN
English en United States US
German de Great Britain GB
French fr Canada CA
Japanese ja Germany DE
Korean ko Japan JP
Korea KR
Taiwan TW
Hongkong HK
案例:
Locale locale = new Locale("en","GB"); //应用与英国的Locale
消息格式化:
使用java.text.MessageFormat 类的静态方法format(),用来格式化带参数的文本,可替换占位符;
一般使用默认的Locale,如果要使用特定的Locale , 需要构造一个MessageFormat 对象
MessageFormat mf = new MessageFormat(greeting,locale);
String msg = mf.format(new Object[]{"xiaofang",new Date()});
消息文本中的数字占位符将按照Object[]数组元素的顺序而被替换;
Struts2 中的国际化:
配置资源文件:Struts2 强调的使各个组件之间的松散耦合,而各个组件之间都是通过配置文件来实现相互关联和交互;
配置资源文件常量:即配置框架的struts.custom.i18n.resources 常量,该常量定义了struts2 框架全局国际化资源的basename;
案例:配置常量 在struts.xml中进行配置:
<constant name="struts.custom.i18n.resources" value="globalMessages"></constant>
建立资源文件:
规则:basename_language_country.properties 建立不同语言环境的资源文件;
native2ascii MyResource.tmp MyResource_zh_CN.properties----将MyResources.tmp文件中的非ASCII 字符转换成Unicode编码保存
到MyResources_zh_CN.properties文件中
使用getText("key"); 可以在action中获取资源文件中的内容 ,包含获取带参数的资源文件内容;
访问国际化消息:
Struts2 主要提供了多种方式来访问资源文件中的本地化消息,以适应不同的场景:
在action 中访问本地化消息
String msg=getText("greeting",new String[]{"值1",值2}); // 不同类型加不同符号
在jsp页面中访问本地化消息
不带参数的:<s:text name="title"> 访问键为title 的消息字符串
带参数的:greeting={0},欢迎你进入管理界面今天使:{1}
<s:text name="greeting">
<s:param value="小贩">
<s:param value="new java.util.Date()"/>
</s:text>
在表单标签的属性中访问本地化消息
使用getText(); 方法获得消息字符串
<s:textfield name="user.username" label="%{getText('username')}"/>
使用表单标签的 key 属性来指定消息字符串的key
<s:textfield name="user.username" key="username"/>
在资源文件中访问本地化消息
email = 邮件地址
error.emal.invalid=${getText("email")}
Struts2 的输入验证:
对用户输入的数据验证分为两个部分: 一是验证数据的有效性,而是在用户输入了不正确的数据后向用户提示错误信息;
验证分为:客户端验证/服务器端验证
客户端验证:主要是通过JavaScript 脚本来实现
服务器端验证:编写java代码来对输入的数据进行验证;
使用valide()方法验证:在类ActionSupport中,只需将该方法重写;
addFieldError("username","用户名不能为空"); 这个方法执行后execure() 这个方法就不会执行;
执行完验证方法之后框架会自动的返回到input视图组件中;
<result name="input" >/reg.jsp</result>
<s:form/> 会自动的将异常信息显示该表单元素验证异常的信息,如果要显示异常信息可以加入<s:fielderror/>标签,
该标签会显示所有的异常信息;
基于框架的输入验证:
1、使用字段验证的输入验证
2、使用非字段的输入验证
1、使用字段验证,就是建立一个特性的验证规则文件xml文件;规则:Action 名称-validation.xml
文件内容见:RegAction-validation.xml
2、非字段验证:
<validators>
<validator type="requiredstring">
<param name="fieldName">username</param>
<message>..
</validator>
</validators>
输入验证的国际化信息:reg.error.required.username 为资源文件中的 key==键
<validators>
<validator type="requiredstring">
<param name="fieldName">username</param>
<message key="reg.error.required.username"></message>
</validator>
</validators>
分享到:
相关推荐
在“Struts2数据校验与国际化”这一主题中,我们将深入探讨Struts2如何通过不同的验证机制确保数据的有效性,以及如何通过国际化功能提供多种语言的用户体验。 首先,数据校验是任何Web应用程序中的关键环节,它...
总结来说,Struts2的数据验证和国际化功能提高了开发效率,保证了数据的准确性和应用程序的多语言支持。开发者可以通过Action验证或ActionForm验证来处理数据有效性,同时通过资源文件实现内容的国际化。这些特性...
本资料包聚焦于Struts2中的数据校验以及国际化(i18n)支持。 首先,我们来探讨"Struts2中的validation_多国语言版",这是Struts2的数据校验功能。Struts2提供了一种灵活的机制来验证用户输入,通过在Action类中...
2. **表单验证的国际化**:Struts2支持在表单验证时显示国际化错误消息。这可以通过在资源文件中配置相应的验证错误消息来实现。 3. **日期和时间的格式化**:使用`<s:textfield>`等标签时,可以通过设置`...
7. **国际化支持**:Struts2允许使用资源包(properties文件)为不同语言的用户提供本地化的错误消息。 8. **整合其他验证框架**:除了内置的验证功能,Struts2还可以与Hibernate Validator、JSR 303/JSR 349等Java...
总的来说,这个项目提供了一个基础的Struts2应用实例,展示了如何实现国际化、使用Struts2标签库,以及创建简单的用户注册和登录功能,尽管它并不涉及实际的数据存储。对于学习和理解Struts2框架的运作机制,这是一...
当数据校验失败时,Struts2会将错误信息存储在ActionContext中,通常通过`FieldAware`接口将错误与特定的字段关联。开发者可以使用`ActionSupport`基类,该类已经实现了`FieldAware`接口,并提供了一些方便的方法,...
Struts2的拦截器是一种AOP(面向切面编程)的概念,它在Action调用前后执行特定的逻辑,如日志记录、权限验证、数据校验等。拦截器通过配置在struts.xml或struts-plugin.xml文件中,按照定义的顺序进行调用。每个...
在Struts 2中,数据校验是实现业务逻辑的重要组成部分,确保输入的数据符合预设规则,从而提高应用程序的稳定性和安全性。数据校验功能是通过Struts 2的ActionSupport类和其他相关组件来实现的。 首先,...
总的来说,Struts2的数据校验功能是其强大之处,它简化了数据验证的过程,提高了代码的可读性和可维护性。通过注解和XML配置,开发者可以方便地定义和调整验证规则,确保应用数据的安全和正确性。在实际项目中,结合...
struts2中的国际化 struts2转化器 struts2实现表单数据校验 struts2的基石-拦截器 struts2中实现IOC struts2中实现文件上传 struts2中实现CRUD struts2中的OGNL struts2的新表单标志的使用 struts2与AJAX一 struts2...
在Struts的框架中,数据校验和国际化是两个重要的功能,对于提升应用的用户体验和保证数据的准确性至关重要。 1. 数据校验: 数据校验是确保用户输入的数据符合预期格式和规则的过程。在Struts框架中,数据校验...
在Struts2中实现国际化,主要涉及到以下几个关键知识点: 1. **资源包(Resource Bundle)**:资源包是一系列本地化文本的集合,通常存储为`.properties`文件。例如,`messages.properties`是默认的语言版本(通常...
在Struts2中,输入校验是确保数据安全、准确和有效的重要环节。本篇文章将深入探讨Struts2的输入校验机制及其相关知识点。 **输入校验的重要性** 输入校验是Web应用开发中的关键步骤,它可以防止恶意用户提交无效或...
Struts2作为一款强大的MVC框架,被广泛应用于J2EE企业级项目开发中,尤其在数据校验和国际化方面提供了高效便捷的支持。本节主要探讨Struts2在数据校验和国际化实施上的核心概念和技术。 首先,让我们回顾一下...
总的来说,这个实例项目展示了如何在Struts1.2中实现国际化和表单验证,这对于任何需要处理多语言用户和确保数据完整性的Web应用都是非常重要的。通过学习和实践这些概念,开发者可以创建更健壮、用户体验更好的Web...
10. **国际化(Internationalization, i18n)**:Struts2支持多语言,通过资源包(Resource Bundles)可以方便地实现不同地区的语言切换。 综上所述,"应用Struts2处理表单数据"这个主题涵盖了Struts2框架中的诸多...
与Struts1相比,Struts2具有显著的优势,包括更少的侵入性设计、支持AOP编程的拦截器、类型转换器、多样的表现层技术以及更灵活的数据校验机制。 首先,Struts2的无侵入式设计使得应用程序不再紧密依赖Servlet API...