用户注册案例的实验——国际化

 0hi猿团提供了移动跨平台开发视频,包括html5,apicloud appcan,dcloud,具体请看http://www.9y.cm 

用户注册案例的实验——国际化


步骤:

1.使用<html:errors>标签可以获取存储在request域中的错误信息并进行显示,根据程序报告的异常信息,引入struts国际化资源包的配置和创建国际化资源文件,运行正常。

2. 在国际化资源文件中设置错误提示信息,并将FormBean.validate方法中的ActionMessage对象关联的错误提示信息改为从资源文件中读取。

3.实验分析struts按什么规则判断用户的Locale信息和如何根据Locale信息来获取资源消息。

4.使用<bean:message>将页面的标题栏文字和提交按钮国际化。

5.在struts中如何配置多个资源包,<bean:message>可通过bundle属性来指明使用哪个资源包。

6.<html:link>和<html:submit>等标签的titleKey属性的国际化功能,<html:submit>生成的按钮表面的文字如何实现国际化。



第1步:如果struts-config.xml文件中没有配置Message-resource,那么,<html:errors> 标签会报告错误,讲课时可以故意在struts-config.xml文件中不配置MessageResource,等到<html:errors>标签出现错误时,让大家分析。接着配置和创建MyApp,MyApp_zh_CN,MyApp_en等三个资源文件,这里要解释资源文件运行时的存放位置和在eclipse中为什么是放置在src目录或其子目录中的道理。

第2步:有学员不太明白我为什么将资源文件中的key设置为error.username或error.password2等形式,这只是一种良好的明明习惯,让别人一眼就能看出这代表的是一条错误消息。

第3步:先看到中文效果,然后将浏览器设置为英文语言,问看到什么效果,分析为什么是中文,因为struts取Locale都是从session中取的,如果session中没有Locale才根据浏览器来获得Locale,并将这个Locale保存在session中了,以后struts判断用户的Locale就是从这个Session中获取了 ,这主要是便于用户可以手工改语言,例如,struts-mailreader的例子。要想看到英文的效果,再启动一个浏览器就可以了。接着删除MyApp_en问效果,大家都说还是英文的,因为默认资源包是MyApp,结果却是中文的,因为找不到某个Locale对应的资源文件时,优先去找操作系统相关的资源文件,最后才是找默认资源包。为了保证最后一步的实验,必须叫MyApp_zh_CN,不能是MyApp_zh或MyApp_zh-CN。

第4步: <bean:message>标签用于取资源包中的内容进行显示,为了支持国际化开发,JSP页面显示的信息应该通过<bean:message>标签从资源文件中提取,<bean:message>的信息也是从MessageResource对象中读取的。

第5步:有时候需要将错误信息与提示信息分开存放,即把错误信息和普通文本信息分散在不同的资源文件中。把提示信息放在一个单独的info资源包中,不放在缺省资源包中(这里提前将错误消息放在缺省资源包中,便于以后讲解业务校验错误时如何实现参数的国际化),这时候引出struts框架根据<messageresource>标签的信息生成MessageResource对象,以及将MessageResource保存在appliaction域中的思想。ActionServlet在起动时就创建该MessageResource对象,并将其存储进application中,在处理每个请求时,又将其存储进request对象中。

将前面查看FormBean存储情况的代码修改一下,即变成下面代码打印出application作用域中的各个属性,从而分析了多个国际化资源包如何存储:

<c:forEach items="${applicationScope}" var="oneAttr">

${oneAttr.key }:${oneAttr.value }<br>

</c:forEach>

如果要访问其他资源包中的消息,需要使用<bean:message>标签的bundle属性来指明访问哪个资源包,<html:errors>标签中也有bundle属性。


用户注册案例的实验 ——<html:errors>标签详讲

步骤:

1. 在ActionErrors中再增加一个没有填写用户名的错误,这样在ActionErrors中有了两条错误消息,在jsp页面中可以使用<html:errors>标签的property属性来分别显示这两条消息。

2. 参看struts-mailreader例子程序中的资源文件,设置errors.header、errors.footer、errors.prefix、errors.suffix等消息,查看<html:errors>标签显示这些消息的效果。

3.参看下页的示意图,分析和说明ActionErrors中的每个key可以对应多个ActionMessage对象,并演示一下其运行效果。



问题2;ActionErrors和ActionMessages内部存储的同一字段名可以对应多条ActionMessage,例如:

errors.addMessage("age",new ActionMessage("error.age"));

errors.addMessage("age",new ActionMessage("error.old"));

有一特殊字段名ActionMessages.GLOBAL_MESSAGE,代表全局错误信息。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

zhchzh1000

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值