一、struts.valueStack的使用
当Action设置了某个属性后,Struts2将这些属性值全部封装在一个叫做struts.valueStack的请求属性里。在页面可以输出ValueStack vs = (ValueStack)request.getAttribute("struts.valueStack");
String[] books = (String[])vs.findValue("books"); books是action里的属性
for (String book:books){
out.println(book);
}
不过这种方法基本不会去用。
二、国际化注意点及native2ascii使用:
(一)、国际化资源文件命名的格式为:basename_语言代码_国家代码.properties
例如:美国 messageResource_en_US.properties
中国 messageResource_zh_CN.properties
(二)、加载资源文件可以通过struts.properties文件来定义
例如:struts.custom.i18n.resources = messageResource
(三)、输出国际化信息:
1.<s:text name="messageKey" /> 使用s:text标签来输出国际化信息。
2.<s:property value="%{getText("messageKey")" /> 使用表达式方式输出国际化信息。
(四)、native2acsii:
如果国际化资源文件包含了非西欧字符,则应先转换你成标准的ASCII格式,可以利用native2ascii来转化:
native2ascii messageResouce.properties messgeResouce_zh_CN.properties
输入文件名为:messageResource.properties
输出文件名为:messageResouce_zh_CN.properties
具体用法:
用法:native2ascii [-reverse] [-encoding 编码] [输入文件 [输出文件]]
-[options]:表示命令开关,有两个选项可供选择
-reverse:将Unicode编码转为本地或者指定编码,不指定编码情况下,将转为本地编码。
-encoding encoding_name:转换为指定编码,encoding_name为编码名称。
[inputfile [outputfile]]
inputfile:表示输入文件全名。
outputfile:输出文件名。如果缺少此参数,将输出到控制台
三、数据校验
[b]利用struts2的数据校验或者拦截器,一定要在action中配置<result name="input" />,当有错误的时候系统会自动返回,如果要在返回后的页面中输出错误信息,则需要在该页面中添加<s:fielderror />,但错误信息有时候很难看懂,故可以配置国际化,有些key是固定的,详细的看文档。[/b]
(一)、通过重写ActionSupport类的validate方法实现。
1.一般都会继承ActionSupport,因为他里面有return的值。
2.validate方法会在execute方法之前执行,如果执行了validae方法,Action类的fieldErrors中已经包含了数据校验错误,请求将被转发到input逻辑视图处。故应该要配置返回为input属性。
3.因为struts2的<s:form.../>默认已经提供了输出校验错误的能力,故错误信息会直接在input的页面输出。
(二)、使用struts2的校验框架
1.增加一个校验配置文件,通过使用struts2已有的校验器进行校验。
2.遵守如下规则:ActionName-validation.xml其中ActionName就是需要校验的Action的类名。并且把该文件和Action类的class文件放在同一个路径下。
3.校验规则的定义文件如下:
<?xml version="1.0" encoding="GBK"?>
<!-- 指定校验规则文件的DTD信息 -->
<!DOCTYPE validators PUBLIC "-//OpenSymphony Group//XWork Validator 1.0.3//EN" "http://www.opensymphony.com/xwork/xwork-validator-1.0.3.dtd">
<!-- 校验规则定义文件的根元素 -->
<validators>
<!-- 校验第一个表单域:username -->
<field name="username">
<!-- 该表单域必须填写 -->
<field-validator type="requiredstring">
<!-- 如果校验失败,显示user.required对应的信息 -->
<message key="user.required"/>
</field-validator>
</field>
<!-- 校验第二个表单域:password -->
<field name="password">
<field-validator type="requiredstring">
<!-- 如果校验失败,显示pass.required对应的信息 -->
<message key="pass.required"/>
</field-validator>
</field>
</validators>
当Action设置了某个属性后,Struts2将这些属性值全部封装在一个叫做struts.valueStack的请求属性里。在页面可以输出ValueStack vs = (ValueStack)request.getAttribute("struts.valueStack");
String[] books = (String[])vs.findValue("books"); books是action里的属性
for (String book:books){
out.println(book);
}
不过这种方法基本不会去用。
二、国际化注意点及native2ascii使用:
(一)、国际化资源文件命名的格式为:basename_语言代码_国家代码.properties
例如:美国 messageResource_en_US.properties
中国 messageResource_zh_CN.properties
(二)、加载资源文件可以通过struts.properties文件来定义
例如:struts.custom.i18n.resources = messageResource
(三)、输出国际化信息:
1.<s:text name="messageKey" /> 使用s:text标签来输出国际化信息。
2.<s:property value="%{getText("messageKey")" /> 使用表达式方式输出国际化信息。
(四)、native2acsii:
如果国际化资源文件包含了非西欧字符,则应先转换你成标准的ASCII格式,可以利用native2ascii来转化:
native2ascii messageResouce.properties messgeResouce_zh_CN.properties
输入文件名为:messageResource.properties
输出文件名为:messageResouce_zh_CN.properties
具体用法:
用法:native2ascii [-reverse] [-encoding 编码] [输入文件 [输出文件]]
-[options]:表示命令开关,有两个选项可供选择
-reverse:将Unicode编码转为本地或者指定编码,不指定编码情况下,将转为本地编码。
-encoding encoding_name:转换为指定编码,encoding_name为编码名称。
[inputfile [outputfile]]
inputfile:表示输入文件全名。
outputfile:输出文件名。如果缺少此参数,将输出到控制台
三、数据校验
[b]利用struts2的数据校验或者拦截器,一定要在action中配置<result name="input" />,当有错误的时候系统会自动返回,如果要在返回后的页面中输出错误信息,则需要在该页面中添加<s:fielderror />,但错误信息有时候很难看懂,故可以配置国际化,有些key是固定的,详细的看文档。[/b]
(一)、通过重写ActionSupport类的validate方法实现。
1.一般都会继承ActionSupport,因为他里面有return的值。
2.validate方法会在execute方法之前执行,如果执行了validae方法,Action类的fieldErrors中已经包含了数据校验错误,请求将被转发到input逻辑视图处。故应该要配置返回为input属性。
3.因为struts2的<s:form.../>默认已经提供了输出校验错误的能力,故错误信息会直接在input的页面输出。
(二)、使用struts2的校验框架
1.增加一个校验配置文件,通过使用struts2已有的校验器进行校验。
2.遵守如下规则:ActionName-validation.xml其中ActionName就是需要校验的Action的类名。并且把该文件和Action类的class文件放在同一个路径下。
3.校验规则的定义文件如下:
<?xml version="1.0" encoding="GBK"?>
<!-- 指定校验规则文件的DTD信息 -->
<!DOCTYPE validators PUBLIC "-//OpenSymphony Group//XWork Validator 1.0.3//EN" "http://www.opensymphony.com/xwork/xwork-validator-1.0.3.dtd">
<!-- 校验规则定义文件的根元素 -->
<validators>
<!-- 校验第一个表单域:username -->
<field name="username">
<!-- 该表单域必须填写 -->
<field-validator type="requiredstring">
<!-- 如果校验失败,显示user.required对应的信息 -->
<message key="user.required"/>
</field-validator>
</field>
<!-- 校验第二个表单域:password -->
<field name="password">
<field-validator type="requiredstring">
<!-- 如果校验失败,显示pass.required对应的信息 -->
<message key="pass.required"/>
</field-validator>
</field>
</validators>