数据校验和国际化

Posted 程序不是生活的全部,但生活中一定要有程序

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据校验和国际化相关的知识,希望对你有一定的参考价值。

一:数据校验 

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="message"></constant>

    <!-- 指定编码方案,如果想要转换国际化 必须指定为UTF-8 默认就是u8-->

    <constant name="struts.i18n.encoding" value="UTF-8"></constant>

    <!--  -->

    <constant name="struts.ui.theme" value="simple"></constant>

 

 

 

1.2配置资源文件

例:如下

中文:message.properties

register.page=\u7528\u6237\u6CE8\u518C

register.title=\u65B0\u7528\u6237\u6CE8\u518C

name=\u59D3\u540D

password=\u5BC6\u7801

repassword=\u786E\u8BA4\u5BC6\u7801

telephone=\u7535\u8BDD\u53F7\u7801

username=\u7528\u6237\u540D

submit=\u7ACB\u5373\u6CE8\u518C

 

 

英文:

register.page=HouserRent-User Register

register.title=New User Register

name=Name

password=Password

repassword=RePassword

telephone=Telephone

username=UserName

submit=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;

}

@Override

public 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类中植入如下代码

@Override

public void validate() {

if(this.name==null||this.name.equals(""))

{

  this.addActionError(this.getText("name.null"));

}

}

 

1.2

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

name.null=Name cannot be null

name.null=\u7528\u6237\u540D\u4E0D\u80FD\u4E3A\u7A7A

 

完成!

以上是关于数据校验和国际化的主要内容,如果未能解决你的问题,请参考以下文章

springMVC-错误消息的显示和国际化

数据校验和国际化

数据校验和国际化

框架 day28 Struts2-封装数据,类型转换,数据校验,国际化,拦截器

ngx-translate实现国际化:this.translate.use()this.translate.get()this.translate.instant()onLangChange(代码片段

Spring validation中自定义的校验错误提示信息如何支持国际化