`
younglibin
  • 浏览: 1195546 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

struts2 使用客户端校验例子

阅读更多



 

action:

package lee;

import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.ActionContext;
import java.util.*;
import java.util.regex.*;
import java.text.*;
public class RegistAction extends ActionSupport
{
 private String name;
 private String pass;
 private int age;
 private Date birth;

// get/set方法

}

验证文件:

<?xml version="1.0" encoding="GBK"?>
<!-- 指定校验配置文件的DTD信息 -->
<!DOCTYPE validators PUBLIC "-//OpenSymphony Group//XWork Validator 1.0.2//EN"
 "http://www.opensymphony.com/xwork/xwork-validator-1.0.2.dtd">
<!-- 校验文件的根元素 -->
<validators>
 <!-- 校验Action的name属性 -->
 <field name="name">
  <!-- 指定name属性必须满足必填规则 -->
  <field-validator type="requiredstring" short-circuit="true">
   <param name="trim">true</param>
   <!-- 如果校验失败,输出name.requried对应的国际化信息 -->
   <message>${getText("name.requried")}</message>
  </field-validator>
  <!-- 指定name属性必须匹配正则表达式 -->
  <field-validator type="regex">
   <param name="expression"><![CDATA[(\w{4,25})]]></param>
   <!-- 如果校验失败,输出name.regex对应的国际化信息 -->
   <message>${getText("name.regex")}</message>
  </field-validator>
 </field>
 <!-- 校验Action的pass属性 -->
 <field name="pass">
  <!-- 指定pass属性必须满足必填规则 -->
  <field-validator type="requiredstring" short-circuit="true">
   <param name="trim">true</param>
   <!-- 如果校验失败,输出pass.requried对应的国际化信息 -->
   <message>${getText("pass.requried")}</message>
  </field-validator>
  <!-- 指定pass属性必须满足匹配指定的正则表达式 -->
  <field-validator type="regex">
   <param name="expression"><![CDATA[(\w{4,25})]]></param>
   <!-- 如果校验失败,输出pass.regex对应的国际化信息 -->
   <message>${getText("pass.regex")}</message>
  </field-validator>
 </field>
 <!-- 指定age属性必须在指定范围内-->
 <field name="age">
  <field-validator type="int">
   <param name="min">1</param>
   <param name="max">150</param>
   <!-- 如果校验失败,输出age.range对应的国际化信息 -->
   <message>${getText("age.range")}</message>
  </field-validator>
 </field>
 <!-- 指定birth属性必须在指定范围内-->
 <field name="birth">
  <field-validator type="date">
   <!-- 下面指定日期字符串时,必须使用本Locale的日期格式 -->
   <param name="min">1900-01-01</param>
   <param name="max">2050-02-21</param>
   <!-- 如果校验失败,输出birth.range对应的国际化信息 -->
   <message>${getText("birth.range")}</message>
  </field-validator>
 </field>
</validators>
国际化资源文件:

globalMessages_zh_CN.properties

xwork.default.invalid.fieldvalue={0}\u5B57\u6BB5\u65E0\u6548
name.requried=\u60A8\u5FC5\u987B\u8F93\u5165\u7528\u6237\u540D\!
name.regex=\u60A8\u8F93\u5165\u7684\u7528\u6237\u540D\u53EA\u80FD\u662F\u5B57\u6BCD\u548C\u6570\u7EC4\uFF0C\u4E14\u957F\u5EA6\u5FC5\u987B\u57284\u523025\u4E4B\u95F4\!
pass.requried=\u60A8\u5FC5\u987B\u8F93\u5165\u5BC6\u7801\!
pass.regex=\u60A8\u8F93\u5165\u7684\u5BC6\u7801\u53EA\u80FD\u662F\u5B57\u6BCD\u548C\u6570\u7EC4\uFF0C\u4E14\u957F\u5EA6\u5FC5\u987B\u57284\u523025\u4E4B\u95F4\!
age.range=\u60A8\u7684\u5E74\u9F84\u5FC5\u987B\u5728${min}\u548C${max}\u4E4B\u95F4\!
birth.range=\u60A8\u7684\u751F\u65E5\u5FC5\u987B\u57281900-01-01\u548C2050-02-21\u4E4B\u95F4\!
globalMessages.properties

xwork.default.invalid.fieldvalue={0}\u00D7\u00D6\u00B6\u00CE\u00CE\u00DE\u00D0\u00A7
name.requried=\u00C4\u00FA\u00B1\u00D8\u00D0\u00EB\u00CA\u00E4\u00C8\u00EB\u00D3\u00C3\u00BB\u00A7\u00C3\u00FB\!
name.regex=\u00C4\u00FA\u00CA\u00E4\u00C8\u00EB\u00B5\u00C4\u00D3\u00C3\u00BB\u00A7\u00C3\u00FB\u00D6\u00BB\u00C4\u00DC\u00CA\u00C7\u00D7\u00D6\u00C4\u00B8\u00BA\u00CD\u00CA\u00FD\u00D7\u00E9\u00A3\u00AC\u00C7\u00D2\u00B3\u00A4\u00B6\u00C8\u00B1\u00D8\u00D0\u00EB\u00D4\u00DA4\u00B5\u00BD25\u00D6\u00AE\u00BC\u00E4\!
pass.requried=\u00C4\u00FA\u00B1\u00D8\u00D0\u00EB\u00CA\u00E4\u00C8\u00EB\u00C3\u00DC\u00C2\u00EB\!
pass.regex=\u00C4\u00FA\u00CA\u00E4\u00C8\u00EB\u00B5\u00C4\u00C3\u00DC\u00C2\u00EB\u00D6\u00BB\u00C4\u00DC\u00CA\u00C7\u00D7\u00D6\u00C4\u00B8\u00BA\u00CD\u00CA\u00FD\u00D7\u00E9\u00A3\u00AC\u00C7\u00D2\u00B3\u00A4\u00B6\u00C8\u00B1\u00D8\u00D0\u00EB\u00D4\u00DA4\u00B5\u00BD25\u00D6\u00AE\u00BC\u00E4\!
age.range=\u00C4\u00FA\u00B5\u00C4\u00C4\u00EA\u00C1\u00E4\u00B1\u00D8\u00D0\u00EB\u00D4\u00DA${min}\u00BA\u00CD${max}\u00D6\u00AE\u00BC\u00E4\!
birth.range=\u00C4\u00FA\u00B5\u00C4\u00C9\u00FA\u00C8\u00D5\u00B1\u00D8\u00D0\u00EB\u00D4\u00DA1900-01-01\u00BA\u00CD2050-02-21\u00D6\u00AE\u00BC\u00E4\! 

struts.xml

<?xml version="1.0" encoding="GBK"?>
<!DOCTYPE struts PUBLIC
 "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
 "http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
 <constant name="struts.custom.i18n.resources" value="globalMessages"/>
 <constant name="struts.i18n.encoding" value="GBK"/>
 <package name="lee" extends="struts-default">
  <action name="regist" class="lee.RegistAction">
   <result name="input">/regist.jsp</result>
   <result>/show.jsp</result>
  </action>
  <action name="">
   <result>.</result>
  </action>
 </package>
</struts>

web.xml

<?xml version="1.0" encoding="GBK"?>

<web-app xmlns="http://java.sun.com/xml/ns/javaee"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
 http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" version="2.5">
 <!-- 定义Struts2的核心Filter -->
 <filter>
  <filter-name>struts2</filter-name>
  <filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
 </filter>
 <!-- 让Struts2的核心Filter拦截所有请求 -->
 <filter-mapping>
  <filter-name>struts2</filter-name>
  <url-pattern>/*</url-pattern>
 </filter-mapping>
</web-app>

regist.jsp

<body>
<H1>请输入您的注册信息</H1>
<!-- 使用Struts2标签库生成表单 -->
<s:form action="regist" validate="true">
 <!-- 使用s:textfield标签生成文本输入框 -->
 <s:textfield label="用户名" name="name"/>
 <s:password label="密码" name="pass"/>
 <s:textfield label="年龄" name="age"/>
 <s:textfield label="生日" name="birth"/>
 <s:submit/>
</s:form>
</body>

show.jsp

<body>
<H3>校验成功</H3>
用户名:<s:property value="name"/><br>
密码:<s:property value="pass"/><br>
年龄:<s:property value="age"/><br>
生日:<s:property value="birth"/><br>

</body>

 

 

  • 大小: 15.4 KB
分享到:
评论
2 楼 younglibin 2010-05-20  
如果去掉 一些验证 的 一定 把  struts配置的的 验证 也去掉;估计是 struts 启动时 没找到  验证文件吧
1 楼 yang1755 2010-05-12  
我按照这个做了,把其中的国际化部分去掉了,服务器端校验正常(但是控制台输出一大端东西),客户端校验报500错误,JSP页面直接打不开,请教一下!

相关推荐

    Struts1.3 Validator 验证框架校验Email 例子

    Struts1.3 与1.2向比验证框架部分还是有所区别的,该例子通过一个简单的Email的校验,演示如何通过Struts Validate验证框架进行在页面中生成JavaScripte脚本,进行客户端校验。下完后记得评分,资源分就会回来,还能...

    JSP基于SSM公司商品进销存系统源码

    3、同时使用了了hibernate提供的校验框架,对客户端数据进行校验! 4、Mybati数据库DAO层采用的是Mapper代理开发方法,输入映射采用的是POJO包装类型实现,输出映射采用了resultMap类型,实现了数据库多对一映射。 5...

    双鱼林JSP商品进销存系统 v1.0

    3、同时使用了了hibernate提供的校验框架,对客户端数据进行校验! 4、Mybati数据库DAO层采用的是Mapper代理开发方法,输入映射采用的是POJO包装类型实现,输出映射采用了resultMap类型,实现了数据库多对一映射。 5...

    spring chm文档

    5.2. 使用Spring的Validator接口进行校验 5.3. 从错误代码到错误信息 5.4. Bean处理和BeanWrapper 5.4.1. 设置和获取属性值以及嵌套属性 5.4.2. 内建的PropertyEditor实现 6. 使用Spring进行面向切面编程(AOP...

    Spring-Reference_zh_CN(Spring中文参考手册)

    5.2. 使用Spring的Validator接口进行校验 5.3. 从错误代码到错误信息 5.4. Bean处理和BeanWrapper 5.4.1. 设置和获取属性值以及嵌套属性 5.4.2. 内建的PropertyEditor实现 5.4.2.1. 注册用户自定义的PropertyEditor ...

    Spring 2.0 开发参考手册

    5.2. 使用Spring的Validator接口进行校验 5.3. 从错误代码到错误信息 5.4. Bean处理和BeanWrapper 5.4.1. 设置和获取属性值以及嵌套属性 5.4.2. 内建的PropertyEditor实现 6. 使用Spring进行面向切面编程(AOP...

    Spring中文帮助文档

    5.2. 使用Spring的Validator接口进行校验 5.3. 从错误代码到错误信息 5.4. Bean处理和BeanWrapper 5.4.1. 设置和获取属性值以及嵌套属性 5.4.2. 内建的PropertyEditor实现 6. 使用Spring进行面向切面编程(AOP...

    Spring API

    5.2. 使用Spring的Validator接口进行校验 5.3. 从错误代码到错误信息 5.4. Bean处理和BeanWrapper 5.4.1. 设置和获取属性值以及嵌套属性 5.4.2. 内建的PropertyEditor实现 6. 使用Spring进行面向切面编程(AOP...

Global site tag (gtag.js) - Google Analytics