有如下的场景:
画面上要求能显示多国语言文字,有一个下拉框,存储职位信息。
实现方法:
1.根据struts中对国际化的要求,创建多个资源文件,分别保存不同语言的职位信息;
比如在Action包下创建类级别的资源文件,XXXAction_en_US.properties,XXXAction_zh_CN.properties,etc,
在每个资源文件中定义不同语言的职位信息:
中文(key.position.list=经理,总管,技术人员)
英文(key.position.list=Manager,Director,Technician)
2.在jsp中利用generator标签取得资源文件里的职位信息,按照separator定义的分隔符解析取得数组对象;
3.再用s:select标签将该职位信息用下拉框的方式显示出来;
这样,不用写一句java代码,只需使用generator标签就能实现画面下拉框的效果,且支持多国语言显示,代码非常简介。
标签使用的例子:
<s:generator id="positions" separator="," val="%{getText('key.position.list')}">
<s:select name="form.subscriber.position" list="positions" headerKey="-1" headerValue="%{getText('key.position.header')}" /
<s:fielderror fieldName="form.subscriber.position" />
</s:generator>
说明:
generator里的id定义个名字用于在select中被引用,separator定义分隔符,val里用ognl取得资源文件里定义的职位信息;
select里的name值是在Action类里定义的属性,用于接收画面选中的职位,list值就是generator标签里的id,headerKey,headerValue分别定义下拉框的首选项;
fielderror用于画面上没有选择任一下拉框值时的错误消息显示;
注意:
s:select标签一定要出现在s:generator标签里。