一、struts2对Ajax的支持
1、Dojo框架的使用步骤:
(1)导入Struts2-dojo-plugin-2.1.x.x.jar于WEB-INF在lib目录下
(2)导入Ajax的jsp页面标签库<%@ tablib prefix="sx" uri="struts-dojo-tags"%>
(3)导入CSS样式和JS的集成应用类库<sx:head />
2、Ajax常用的标签:
<sx:div>通过Ajax向其中添加内容,以实现局部刷新。
<sx:a> 通过Ajax更新某个元素的内容或提交表单。
<sx:submit> 通过Ajax更新某个元素的内容或提交表单。
<sx:tabbedPanel >创建一个标签页面,由<sx:div>提供内容。
<sx:autocompleter>根据用户的输入建议,或者帮助用户自动完成输入。
<sx:tree>创建一个支持Ajax的树形组件(Widget)。
3、常用标签的一些属性:
(1)<sx:div> :href(异步请求资源的地址) 、cssClass(div的css属性)、fromId(表单Id,序列化作为参数传递)
indicator(请求时显示具有此id 的元素)、loadText(请求处理时的显示文本)、errorText(请求失败时的显示文本)
executeScript(执行服务器返回的JavaScript代码,默认为false)。
(2)<sx:submit>/<sx:a>:同上、targets(被更新的元素列表,以逗号分隔)。
4、文本输入验证示例:
(1)、编写一个UserAction
package com.accp.validator.action;
import com.opensymphony.xwork2.ActionSupport;
@SuppressWarnings("serial")
public class UserAction extends ActionSupport {
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String reg() throws Exception{
return SUCCESS;
}
}
(2)、在actin目录下编写一个名叫UserAction-validation.xml的XML文件
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE validators PUBLIC
"-//OpenSymphony Group//XWork Validator 1.0.2//EN"
"http://www.opensymphony.com/xwork/xwork-validator-1.0.2.dtd">
<validators>
<!-- 对哪一个属性字段实施验证 -->
<field name="name">
<!-- 定义验证规则 -->
<field-validator type="stringlength">
<param name="trim">true</param>
<param name="minLength">6</param>
<param name="maxLength">12</param>
<message>用户服名的长度必须在${minLength}和${maxLength}</message>
</field-validator>
</field>
</validators>
(3)、在src目录下的struts.xml文件中配置:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "http://struts.apache.org/dtds/struts-2.1.dtd">
<struts>
<package name="default" extends="struts-default">
<action name="user" class="com.accp.validator.action.UserAction">
<result name="input">/index.jsp</result>
<result name="success">/suc.jsp</result>
</action>
</package>
</struts>
(4)、JSP简易代码:
..................................
<s:form action="user!reg.action" method="post">
<s:textfield name="name"></s:textfield>
<s:submit></s:submit>
</s:form>
...............
二、Struts2实现国际化
1、国际化(internationalization:l18N):根据用户所在地区的信息显示相应的文字类型。
2、本地化(Location:L10N): 根据本机的语言和地区显示设置显示相应的字符。
3、不同地区所对应的(国际化)资源文件:
ApplicationResources_en.properties---------------适用于所有英文语言的资源。
ApplicationResources_en_US.properties-----------针对美国的、英文语言的资源。
ApplicationResources_zh.properties---------------所有中文语言的资源。
ApplicationResources_zh_CN.properties-----------中国大陆、中文语言的资源。
ApplicationResources_zh_HK.properties-----------中国香港、中文语言的资源。
ApplicationResources.properties-------------------默认资源文件。
常用---ISO-639语言代码有:zh(汉语)、en(英语)、fr(法语)、de(德语)等。
常用---ISO-3166保准的国家和地区码有:CN(中国大陆)、US(美国)、GB(英国)、TW(中国台湾)、HK(中国香港)等。
4、在struts2中的实现步骤:
(1)在struts.xml文件中指定文件的基名及存储路径:
示例:<struts>
<constant name="struts.custom.i18n.resources" value="message"/>
<constant name="struts.custom.encoding" value="UTF-8"/>
</struts>(基名:message;编码:UTF-8)
(2)、请求创建三个资源文件于src目录下,依次为:message_en.properties、message_zh_HK.properties,message.properties来存放对应的资源。
示例:
message_en.properties
register.page=House-User Register
register.title=new User register
name=Name
password=Password......
message_zh_HK.properties
register.page=用户注册页面
register.title=新用户注册
name=用户名.....
message.properties
(同上.....)
(3)、实现JSP页面信息的国际化显示。
示例:<s:password name="user.password" label="%{getText('password')}">