java中的 s 3_Java框架之Struts2(三)

一、几种国际化输出方式

国际化:国际化的本质,就是查找,替换。程序界面上输出的是国际化消息的 key 所对应的值。Struts2 中的国际化机制,会根据 key 到资源文件中找对应的文本来替换上面的key。

几种输出国际化信息的方式:

-- 在JSP页面中使用标签输出国际化信息:

-- 在Action类中,可以继承ActionSupport,使用getText()方法,该方法的第一个参数用于指定属性文件中的key。

-- 在表单标签中,通过key属性指定属性文件中的key,//如:

== 第一种方式

1.准备两个资源文件,放在src 目录下,资源文件的命名格式如下:

中国大陆: AAA_zh_CN.properties

美国: AAA_en_US.properties

内容分别如下 外国的  AAA_en_US.properties

userNameTxt=UserName

passwordTxt=Password

titleTxt=welcome this website

中国的  AAA_zh_CN.properties

userNameTxt=用户名:

passwordTxt=密码

titleTxt=欢迎光临小站

2.在Struts2.xm中 配置一个常量

3.在AddUser.jsp中

//会显示出一个文本框,前面的文字是 userNameTxt 指写的文字

查看的时候 工具-internet 选项 语言

== 在Action类中输出国际化信息

public class UserAction extends ActionSupport{ //必须继承ActionSupport 才能有getText 方法

@Overridepublic String execute() { //注意,是重写 父类的execute 方法

String title=this.getText("titleTxt");

ActionContext.getContext().put("msg", title);return "success";

}

}

在页面中,使用el表达式直接取 msg 就行了 ( ${msg} )

二、带有占位符的国际化

在上面的配置文件再加入一个带参数的

validateTxt=the {0} value must be {1}

在UserAdd.jsp 页面上:

将分别得到

password 的值必须是 int   或 the password  value must be int

那么在Action中的那个该怎么办?

从父类那继承的方法 getText  有多个重载形式

//String title=this.getText("titleTxt");

String title=this.getText("validateTxt", new String[]{"密码","int"}); //用这种方式可以把占位符用到的参数值传进去

三、包范围资源文件和Action范围资源文件

== 包范围

资源文件过于巨大会产生问题,可以考虑一个包用一个资源文件,可以在 包下放置 package_zh_CN.properties ,package_en_US.properties 资源文件 必须这么命名(前面必须叫package),这就完事了,访问的时候先从包里找,不到再到外层找。

== Action范围

我们可也可以为某个Action单独指定资源文件,在Action所在的路径下,放置 ActionClassName_zh_CN.properties 资源文件 如 UserAction_zh_CN.properties

例子,将上面的 配置文拖到和 UserAction 相同的路径下,改名为 UserAction_zh_CN.properties  访问即可

四、 标签

使用标签指定直接从某个特定的资源文件中取数据。

如果要访问类路径下某个包下的资源文件,对于前面的例子可以如下

//指定访问的是全局的

//指定访问的是 某个包下的

//指定访问的是某个Action 的

i18n 指的是 internationalization (国际化) 首字母,和尾字母.加上中间的18个字符。

五、Struts22 的异常处理

通过Struts22的异常处理机制,我们无需在execute 的方法中捕捉任何异常,仅需在Struts2.xml,文件中进行配置,即可完成相应的异常处理。

使用 过行控制需要配置两个属性:

exception 映射的异常类型

result 出现异常时,对应的逻辑视图名

根据  出现的位置,异常映射又可分为两种:

-- 局部异常映射

将 做为Action 元素的子元素配置

-- 全局异常映射

将 做为 元素的子元素配置

当然执行Action的时候发生异常时,如果在Action中没有捕获异常而是抛出异常的话,Struts22会首先在正在执行的Action中查找,寻找对应的Exception进行处理,如果找不到,才会去去寻找对应的Exception处理,如果还是找不到的话,就只好抛出异常了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值