首页 > 代码库 > 数据校验和国际化

数据校验和国际化

一:数据校验 

1、用execute()方法实现数据校验

      继承自ActionSupport类,重写execute()

 

2、用validate()方法实现数据校验

      继承ActionSupport类,该类实现了Validateable接口,该接口中定义了一个validate()方法,在自定义的Action类中重写validate()方法,如果校验表单输入域出现错误,则将错误添加到ActionSupport类的fieldErrors域中,然后通过OGNL表达式负责输出。

 

3、用validateXxx()方法实现数据校验

        在validate()方法中对数据验证是可以工作的,如果在字段非常多的情况下,而且每个字段又有很复杂的验证,那么我们的validate方法中的代码会越来越多。  针对特定的方法输入的数据的验证我们把他放到validateXxx方法中,Xxx是方法名的首字母大写形式

 

4、用struts2的验证框架实现数据校验

        ① 为什么要用验证框架:

      当验证规则比较复杂时,Action类的代码将变得很繁琐,假如我们要对电话号码的格式进行验证,是非常麻烦的

        ②验证框架的优点:

      Struts2中内置了一个验证框架,将常用的验证规则进行了编码实现,使用验证框架时,用户无需再进行编码,只要在外部配置文件中指定某个字段需要进行的验证类型,并提供出错误信息即可,从而大大减轻了开发者的负担,提高开发效率

        ③命名规范:

       1、文件的命名规则:

      ActionName-validation.xml,ActionName为需要校验的Action类名,如:UserAction-validation.xml

 

       2、文件存放路径:

      该文件与Action类的class文件位于同一个路径下

 

       3、文件格式:包括如下3个配置元素

       <field>: 为每一个需要校验的字段添加一个验证元素<field>,name属性表示要校验的字段名。

       <field-validator>: 使用该元素来指定校验规则,type属性为校验规则名

       <message>: 使用该元素来指定校验出错时要显示的标签,key属性指向资源文件中的标签名

二:国际化

Struts2的国际化:

WWWHwhat.where.why.how

1:什么是国际化?

国际化(internationalization)是设计和制造容易适应不同区域要求的产品的一种方式。它要求从产品中抽离所有的与语言,国家/地区和文化相关的元素。换言之,应用程序的功能和代码设计考虑在不同地区运行的需要,其代码简化了不同本地版本的生产。开发这样的程序的过程,就称为国际化。

2:在什么样的状况下使用国际化?

国际化是指的多语言支持,比方说你登录一个系统后,页面上的标签可以默认显示中文,或者默认显示英文。国际化在web开发中比较常用,以便于不同母语的用户使用系统。

3:为什么使用国际化?

原因:因为语言种类繁多

4:重点:如何国际化一个项目?

1.1struts.xml文件中配置如下

  

<!-- 在struts2.xml中配置指定资源文件的基名 -->    <constant name="struts.custom.i18n.resources" value=http://www.mamicode.com/"message"></constant>    <!-- 指定编码方案,如果想要转换国际化 必须指定为UTF-8 默认就是u8-->    <constant name="struts.i18n.encoding" value=http://www.mamicode.com/"UTF-8"></constant>    <!--  -->    <constant name="struts.ui.theme" value=http://www.mamicode.com/"simple"></constant>

 

 

 

1.2配置资源文件

例:如下

中文:message.properties

register.page=\u7528\u6237\u6CE8\u518Cregister.title=\u65B0\u7528\u6237\u6CE8\u518Cname=\u59D3\u540Dpassword=\u5BC6\u7801repassword=\u786E\u8BA4\u5BC6\u7801telephone=\u7535\u8BDD\u53F7\u7801username=\u7528\u6237\u540Dsubmit=\u7ACB\u5373\u6CE8\u518C

 

 

英文:

register.page=HouserRent-User Registerregister.title=New User Registername=Namepassword=Passwordrepassword=RePasswordtelephone=Telephoneusername=UserNamesubmit=Register Now

 

 

1.3

创建Action类:

package cn.Action; import java.util.ArrayList;import java.util.List; import javax.servlet.http.HttpServletRequest; import org.apache.struts2.ServletActionContext; import com.opensymphony.xwork2.ActionSupport; public class languageAction extends ActionSupport {private static final long serialVersionUID = 1L;private String name;private String password;private String repassword;private String telephone;private String username;public static long getSerialversionuid() {return serialVersionUID;}public String getName() {return name;}public String getPassword() {return password;}public String getRepassword() {return repassword;}public String getTelephone() {return telephone;}public String getUsername() {return username;}public void setName(String name) {this.name = name;}public void setPassword(String password) {this.password = password;}public void setRepassword(String repassword) {this.repassword = repassword;}public void setTelephone(String telephone) {this.telephone = telephone;}public void setUsername(String username) {this.username = username;}@Overridepublic String execute() throws Exception {return SUCCESS;}

 

步骤4:创建jsp页面

使用ognl表达式展示国际化!<s:text>,也可以放在<s:i81n>标签中。

<head>    <title><s:text name="register.page"></s:text></title></head><body>    <s:fielderror></s:fielderror>    <h2><s:text name="register.title"></s:text></h2>    <s:form action="loignAction">    <table>    <tr>    <td><s:text name="name" ></s:text></td>    <td><s:textfield name="name" key="name"></s:textfield><td>    </tr>    <tr>    <td><s:text name="password"></s:text></td>    <td><s:textfield name="password"></s:textfield></td>    </tr>    <tr>    <td><s:text name="repassword"></s:text></td>    <td><s:textfield name="repassword"></s:textfield></td>    </tr>    <tr>    <td><s:text name="telephone"></s:text></td>    <td><s:textfield name="telephone"></s:textfield></td>    </tr>    <tr>    <td><s:text name="username"></s:text></td>    <td><s:textfield name="username"></s:textfield></td>    </tr>    <tr>    <td colspan="2"><s:submit    value="%{getText(‘submit‘)}"></s:submit></td>    </tr>    </table>    </s:form></body>

1.5

改变浏览器的语言首选项,通过上移,下移按钮来改变!

2:如何使用国际化验证错误?

1.1Action类中植入如下代码

@Overridepublic void validate() {if(this.name==null||this.name.equals("")){  this.addActionError(this.getText("name.null"));}}

 

1.2

在资源文件中各自添加代码

name.null=Name cannot be nullname.null=\u7528\u6237\u540D\u4E0D\u80FD\u4E3A\u7A7A

 

完成!

数据校验和国际化