sruts2 国际化 规范
引用:http://www.blogjava.net/176142998/archive/2008/08/04/219811.html
1、sturts2的标签很丰富。用起来也很方便,但是它的样式不太好,最好能够自定义一套样式!若不想用sturts2
缺省的样式,就使用theme="simple"。
sturts2中的有些标签,是用js框架写的,需要加载这些框架(如:dojo)。在jsp页面中使用<s:head/>加载这些框架和css!
2、sturts2中的国际化,又其拦截器完成。拦截器会根据用户浏览器设置的不同来,自动适配!只需要定义多个资源文件
就可以!
资源文件可以是全局的(在classes中),也可以是局部的(在各个特定的包中)!
对资源文件的要求:
要注意资源文件的命名规范!例如:package_en_US.properties和package_zh_CN.properties
I、两种实现国际化的方法,key和lable方式!
例如:
a、<s:textfield label="%{getText('username')}" name="username"/>
b、<s:textfield key="username" name="username"/>
II、单个的资源信息提取的两种方式:
例如:
a、<s:property value="getText('main.message')"/>
b、<s:text name="main.message"/>
III、在s:datetimepicker标签中可以使用,key和label两种方式来进行国际化
key="date"
label="%{getText('date')}"
这个日期标签,在中文环境和英文环境下的显示形式是不一样的
中文:2007-11-12
英文:11/14/2007
所以在进行日期处理的时候要小心
3、对于分步表单提交和“后退”网页过期的问题有待继续研究!
对于表单重复提交的问题可以使用<s:token/>来解决!
在使用token时,需要配置拦截器,而且在Action中需要定一个常量!
例如:
页面:<s:token/>
xml: <interceptor-ref name="defaultStack" />
<interceptor-ref name="token" />
Action:private static final long serialVersionUID = 6820659617470261780L;
4、个人感觉struts2的Validation(验证框架)不是很好,效率也不高,而且需要定义比较复杂的XXXAction-validation.xml文件.
所以对于页面上的限制还是使用js或js框架(如:jquery,dojo,portaltype)!
5、<s:submit key="back" name="redirect-action:crud!list" />这种实现方式比较好!
<s:submit key="back" onclick="#:history.back();" />
这种实现方式不好,因为它会自动刷新页面;当有添加,删除,更新操作时,就重复的刷新页面!不推荐使用!
6、<s:select label="%{getText('user.from')}"
name="user.from"
headerKey=""
headerValue="Select From"
list="fromArray"
listKey="id"
listValue="name"
value="user.from"
required="true" />
<%--
name="user.from"是用于通过struts2内在的机制给Action自动赋值
list="fromArray"是一个封装了bean的list,其中的bean 有id和name属性
listKey="id"
listValue="name"
那么,当用户提交表单的时候,sturts2的内在机制,会自动为我们装载的!
需要我们在Action里定义一个user bean,其中user中有一个from属性
要是嵌套定义,如:user bean 中又定义了一个bean(DateBean)。那么在页面就要使用user.date.year这种形式,来向Action传值!
其中,date是user bean 中的一个属性,struts2会自动为你装载!
缺省的样式,就使用theme="simple"。
sturts2中的有些标签,是用js框架写的,需要加载这些框架(如:dojo)。在jsp页面中使用<s:head/>加载这些框架和css!
2、sturts2中的国际化,又其拦截器完成。拦截器会根据用户浏览器设置的不同来,自动适配!只需要定义多个资源文件
就可以!
资源文件可以是全局的(在classes中),也可以是局部的(在各个特定的包中)!
对资源文件的要求:
要注意资源文件的命名规范!例如:package_en_US.properties和package_zh_CN.properties
I、两种实现国际化的方法,key和lable方式!
例如:
a、<s:textfield label="%{getText('username')}" name="username"/>
b、<s:textfield key="username" name="username"/>
II、单个的资源信息提取的两种方式:
例如:
a、<s:property value="getText('main.message')"/>
b、<s:text name="main.message"/>
III、在s:datetimepicker标签中可以使用,key和label两种方式来进行国际化
key="date"
label="%{getText('date')}"
这个日期标签,在中文环境和英文环境下的显示形式是不一样的
中文:2007-11-12
英文:11/14/2007
所以在进行日期处理的时候要小心
3、对于分步表单提交和“后退”网页过期的问题有待继续研究!
对于表单重复提交的问题可以使用<s:token/>来解决!
在使用token时,需要配置拦截器,而且在Action中需要定一个常量!
例如:
页面:<s:token/>
xml: <interceptor-ref name="defaultStack" />
<interceptor-ref name="token" />
Action:private static final long serialVersionUID = 6820659617470261780L;
4、个人感觉struts2的Validation(验证框架)不是很好,效率也不高,而且需要定义比较复杂的XXXAction-validation.xml文件.
所以对于页面上的限制还是使用js或js框架(如:jquery,dojo,portaltype)!
5、<s:submit key="back" name="redirect-action:crud!list" />这种实现方式比较好!
<s:submit key="back" onclick="#:history.back();" />
这种实现方式不好,因为它会自动刷新页面;当有添加,删除,更新操作时,就重复的刷新页面!不推荐使用!
6、<s:select label="%{getText('user.from')}"
name="user.from"
headerKey=""
headerValue="Select From"
list="fromArray"
listKey="id"
listValue="name"
value="user.from"
required="true" />
<%--
name="user.from"是用于通过struts2内在的机制给Action自动赋值
list="fromArray"是一个封装了bean的list,其中的bean 有id和name属性
listKey="id"
listValue="name"
那么,当用户提交表单的时候,sturts2的内在机制,会自动为我们装载的!
需要我们在Action里定义一个user bean,其中user中有一个from属性
要是嵌套定义,如:user bean 中又定义了一个bean(DateBean)。那么在页面就要使用user.date.year这种形式,来向Action传值!
其中,date是user bean 中的一个属性,struts2会自动为你装载!