数据校验:

Action里的validate()方法能校验action类所有的方法,如果有错,如:addFieldError,会自动返回到workflow校验拦截器不向下继续进行,不用return input(如果在别的action校验的话,需要手动return input)。如果我们只希望校验其中一个方法的话,把validate()方法改为validate+方法名(“首字母大写”);就只校验其中一个的方法。

我的Action:

package cn.jnit.action;

import org.apache.commons.lang.StringUtils;

import cn.jnit.bean.User;

import com.opensymphony.xwork2.ActionSupport;

public class RegisterAction extends ActionSupport {

private static final long serialVersionUID = 1L;

private User user;

public String login() throws Exception {

return SUCCESS;

}

public String login1() throws Exception {

return SUCCESS;

}

@Override

public void validate() {

if(StringUtils.isEmpty(user.getName()))

addFieldError("user.name", "用户名不能为空");

if(StringUtils.isEmpty(user.getPwd()))

addFieldError("user.pwd", "密码不能为空");

}

public User getUser() {

return user;

}

public void setUser(User user) {

this.user = user;

}

}

Strut2验证框架:

验证文件的编写:

在action包下,创建一个action类名-validation.xml的文件,如我的

RegisterAction-validation.xml:

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE validators PUBLIC

"-//OpenSymphony Group//XWork Validator 1.0.3//EN"

"http://www.opensymphony.com/xwork/xwork-validator-1.0.3.dtd">

<validators>

<field name="user.name">

<field-validator type="requiredstring">

<message>用户名不能为空</message>

</field-validator>

<field-validator type="stringlength">

<param name="minLength">5</param>

<param name="maxLength">10</param>

<message>用户名长度在5--10位之间</message>

</field-validator>

</field>

</validators>

其中验证类型,<field-validator type="">其中的type有很多类型,可以在

xwork-core-2.2.1.jar→com.opensymphony.xwork2→validator→validators→default.xml里有:

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE validators PUBLIC

"-//OpenSymphony Group//XWork Validator Config 1.0//EN"

"http://www.opensymphony.com/xwork/xwork-validator-config-1.0.dtd">

<!-- START SNIPPET: validators-default -->

<validators>

<validator name="required" class="com.opensymphony.xwork2.validator.validators.RequiredFieldValidator"/>

<validator name="requiredstring" class="com.opensymphony.xwork2.validator.validators.RequiredStringValidator"/>

<validator name="int" class="com.opensymphony.xwork2.validator.validators.IntRangeFieldValidator"/>

<validator name="long" class="com.opensymphony.xwork2.validator.validators.LongRangeFieldValidator"/>

<validator name="short" class="com.opensymphony.xwork2.validator.validators.ShortRangeFieldValidator"/>

<validator name="double" class="com.opensymphony.xwork2.validator.validators.DoubleRangeFieldValidator"/>

<validator name="date" class="com.opensymphony.xwork2.validator.validators.DateRangeFieldValidator"/>

<validator name="expression" class="com.opensymphony.xwork2.validator.validators.ExpressionValidator"/>

<validator name="fieldexpression" class="com.opensymphony.xwork2.validator.validators.FieldExpressionValidator"/>

<validator name="email" class="com.opensymphony.xwork2.validator.validators.EmailValidator"/>

<validator name="url" class="com.opensymphony.xwork2.validator.validators.URLValidator"/>

<validator name="visitor" class="com.opensymphony.xwork2.validator.validators.VisitorFieldValidator"/>

<validator name="conversion" class="com.opensymphony.xwork2.validator.validators.ConversionErrorFieldValidator"/>

<validator name="stringlength" class="com.opensymphony.xwork2.validator.validators.StringLengthFieldValidator"/>

<validator name="regex" class="com.opensymphony.xwork2.validator.validators.RegexFieldValidator"/>

<validator name="conditionalvisitor" class="com.opensymphony.xwork2.validator.validators.ConditionalVisitorFieldValidator"/>

</validators>

<!--  END SNIPPET: validators-default -->

可以选择。

如果只想验证其中一个方法,那么可以在action下创建:ActionName-struts2.xml里的action标签 name属性值-validation.xml,如我的

RegisterAction-userreg-validation.xml,

实现国际化:

国际化(Internationalization:I18N):

常用的ISO-639语言代码有zh(汉语)、en(英语)、fr(法语)、de(德语)均由两个小写字母组成

常用的ISO-3166标准的国家和地区码有CN(中国大陆)、US(美国)、GB(英国)、TW(台湾)、HK(香港)等,均由两个大写字母组成。

全局变量的国际化:

首先要在Struts.xml里加入:

<constant name="struts.custom.i18n.resources" value="message"></constant>

在src下创建:

Message_language_country.properties,

如我的:

message_en_US.properties里的值:welcome=welcome to China;

message_zh_CN.properties里的值:welcome=欢迎来到中国;

然后在JSP页面里:

<s:text name="getText('welcome')"></s:text>就可以输出,可以根据浏览器语言的配置来配置自己的国际化properties。

Action范围的国际化:那么需要在Action类下面创建:

Action类名_language_country.properties,

如我的:

我的RegisterAction_en_US.properties值为:

user.name=name

user.pwd=pwd

user.age=age

我的RegisterAction_zh_CN.properties值为:

user.name=用户名

user.pwd=密码

user.age=年龄

这里面的user是和我RegisterAction类里的User属性相对应的,

然后我的上传表单为:

<body>

<s:form action="register"  method="post">

<s:textfield name="user.name" label="%{getText('user.name')}"></s:textfield>

<s:password name="user.pwd" label="%{getText('user.pwd')}"></s:password>

<s:textfield name="user.age" label="%{getText('user.age')}"></s:textfield>

<s:submit value="登录"></s:submit>

</s:form>

</body>

上传表单的label名就会根据自己浏览器使用的语言查找对应的语言properties来显示不同的语言,另外这个表单只有在经过Action跳转到表单页面的时候才会显示出数据,因为properties现在是Action范围的文件,没有经过Action跳转到表单JSP就不会显示对应的label数据。

资源文件范围还有包范围资源文件,明明方法是在对应包下添加package_language_country.properties资源文件,其中package为固定写法,只有处于该包及子包下的Action才可以访问该文件。

struts2数据校验与国际化的更多相关文章

  1. Struts2数据校验

    Struts2数据校验 1.常见数据校验方法 表单数据的校验方式: 表单中的数据必须被效验以后才能够被使用,常用的效验方式分为两种: 前台校验:也称之为客户端效验,主要是通过JS编程的方式进行表单数据 ...

  2. struts2 数据校验

    通过struts2中延续自xwork框架的validation.xml配置方式进行数据校验,因struts2 下存在三种请求参数的注入方式,固按照不同注入方式对validation.xml的配置进行总 ...

  3. 第六章、Struts2数据校验

    一.三种实现方式 ① 用validate()方法实现数据校验 继承ActionSupport类,该类实现了Validateable接口,该接口中定义了一个validate()方法,在自定义的Actio ...

  4. 06章 Struts2数据校验

    一.三种实现方式 ① 用validate()方法实现数据校验 继承ActionSupport类,该类实现了Validateable接口,该接口中定义了一个validate()方法,在自定义的Actio ...

  5. struts2 之 struts2数据校验

    1. 数据校验一般分为2类:前端的校验(js校验),后端的校验(java代码):实际开发中大部分情况下都是采用js校验.在对数据安全要求较高的情况下可能会采用后端验证. 2.  Struts2提供了后 ...

  6. JSR教程2——Spring MVC数据校验与国际化

    SpringMVC数据校验采用JSR-303校验. • Spring4.0拥有自己独立的数据校验框架,同时支持JSR303标准的校验框架. • Spring在进行数据绑定时,可同时调用校验框架完成数据 ...

  7. Struts2数据校验方法

    方法: 1.在Action类中execute()方法中进行校验. 优点:Action类无需继承框架中的类. 缺点:(1)当有多个校验时,代码重复,违反高内聚,低耦合. 2.重写框架ActionSupp ...

  8. Struts2 数据校验之四兄弟

    现在是科技的时代,大多数人都在网上购物了, 我们都碰到过相同的问题,各大网站弄的那些各种各样的注册页面,相信大家都深有体会. 有了这验证就很好的保证了我们的信息的准确性和安全性. 接下来我给大家讲解一 ...

  9. Struts2 数据校验流程

随机推荐

  1. 定义 iOS 方法名等不错的规范

    1.配置视图不应命名为 setxxxx, 而应叫做 showxxxx 2.让按钮高亮不应叫做 showxxx, 而应叫做 highlightedxxx. 3,弹出 toastView 可以用 show ...

  2. Java_cookie 和session 的区别详解

    这些都是基础知识,不过有必要做深入了解.先简单介绍一下. 二者的定义: 当你在浏览网站的时候,WEB 服务器会先送一小小资料放在你的计算机上,Cookie 会帮你在网站上所打的文字或是一些选择, 都纪 ...

  3. linux查看memcached状态

    一.使用memcache top脚本 memcache-top 是一个用 Perl 编写的命令行小工具,用来实时的获取 memcached 缓存服务器的详细信息,例如缓存命中率等.到官网下载脚本,放到 ...

  4. mysql相似于oracle的to_char() to_date()方法

    mysql日期和字符相互转换方法, date_format(date,'%Y-%m-%d')  -------------->oracle中的to_char(); str_to_date(dat ...

  5. Objective-C的新特性

    Objective-C的新特性 苹果在今年的 WWDC2012 大会上介绍了大量 Objective-C 的新特性,能够帮助 iOS 程序员更加高效地编写代码.在不久前更新的 Xcode4.4 版本中 ...

  6. Hibernate的第一次测试解析

    解析:此题目考查的是对Hibernate中交叉连接的理解.HQL支持SQL风格的交叉连接查询,交叉连接适用于两个类之间没有定义任何关联时.在where字句中,通过属性作为筛选条件,如统计报表数据.使用 ...

  7. Thinkphp中自己组合的数据怎样使用框架的分页

    做项目有时候,需要自己处理组合数据,不是直接从表中提取出来的.不能按照手册得方法分页显示数据.这时候就得想办法,正好看到他人的方法.地址为:http://www.thinkphp.cn/code/27 ...

  8. 汇编寄存器(内存访问)基础知识之三---mov指令

     1 内存中字的存储 一个字型数据占2个内存单元,内存里面一个内存单元一个字节(8位),高地址单位放高8位,低地址单元放低8位. 注意:0号是地址单元,1是高地址单元(上是低地址,下面是高地址) (1 ...

  9. php 的包管理工具 composer

    官方网站 https://getcomposer.org/ 下载地址 https://getcomposer.org/download/ 安装教程 https://laravist.com/serie ...

  10. css 多行溢出

    <div style=" height: 38px; max-width: 180px; -webkit-box-orient: vertical; word-break: break ...