数据校验:

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. word-wrap和word-break的区别

    最初只有word-wrap,当指定word-wrap: break-word;时将导致容器内的长单词换行且被切断. 后来IE发明了word-break:当应用word-break:break-all时 ...

  2. BZOJ2190: [SDOI2008]仪仗队

    Description 作为体育委员,C君负责这次运动会仪仗队的训练.仪仗队是由学生组成的N * N的方阵,为了保证队伍在行进中整齐划一,C君会跟在仪仗队的左后方,根据其视线所及的学生人数来判断队伍是 ...

  3. 应对Memcached缓存失效,导致高并发查询DB的四种思路(l转)

    当Memcached缓存失效时,容易出现高并发的查询DB,导致DB压力骤然上升. 这篇blog主要是探讨如何在缓存将要失效时,及时地更新缓存,而不是如何在缓存失效之后,如何防止高并发的DB查询. 解决 ...

  4. GO语言练习:channel 缓冲机制

    1.代码 2.运行 3.解析 1.代码 buffer.go package main import ( "fmt" "time" ) func readThre ...

  5. css sprites介绍

    一.CSS Sprites简介 通常被意译为“CSS图像拼合”或“CSS贴图定位”.CSS Sprites并不是一门新技术,目前它已经在网页开发中发展得较为成熟,CSS Sprites并不是什么金科玉 ...

  6. iOS 最全面试题

    HTTP/1.0 在HTTP/1.0版本中,并没有官方的标准来规定Keep-Alive如何工作,因此实际上它是被附加到HTTP/1.0协议上,如果客户端浏览器支持Keep-Alive,那么就在HTTP ...

  7. CAS单点登录配置

    见http://download.csdn.net/detail/u010786672/6942715下载.

  8. 模拟淘宝使用cookie记录登录名,

    <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding= ...

  9. JS 比较日期相隔都少天&& 比较两个日期大小&&指定日期往前后推指定天数

    //这些天常接触到有关于js操作日期事 就小结了一下,希望对你有帮助 function conversionDate(a,b){ var start =a.split('-'); var end = ...

  10. js动态获取当前系统时间+js字符串转换为date日期对象

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/ ...