Struts2.0学习笔记 — 输入校验(Validation)

本文介绍了Struts2框架中的输入校验机制及如何利用XML配置文件进行参数属性值的校验。内容包括类型转换、错误信息自定义、主题设置等,并详细解释了不同类型的校验文件及其使用场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、输入校验:register.jsp、register2.jsp、register3.jsp
输入校验建立在类型转换的基础之上,即先进行类型转换之后,再进行输入校验。

遇到类型转换错误的时候(也就是说不能进行类型转换),struts2框架自动生成一条错误信息,
并且将该错误信息放到addFieldError里面。但也可以自定义显示的错误信息:

全局定义:
 在struts.xml文件<struts>下引入国际化配置文件:
   <constant name="struts.custom.i18n.resources" value="message">
   </constant>
    注:name的值是固定的,"struts.custom.i18n.resources"
     value的值可随意起,
 并在src根目录(即calss根目录下)建message.properties,文件内容:
  xwork.default.invalid.fieldvalue={0} error!!!!

局部定义:
 对哪个Action类进行的类型转化错误,则应把该文件跟此Action类放在同一个包内,且二者的名
称要一致。
 假如,RegisterAction类的age(int型)属性类型转化错误(给age一个abc的字符串,则进
行类型转化时出错),那么,此文件名应为:RegisterAction.properties,,,其内容为:

 invalid.fieldvalue.age= Age conversion error!!

类型转换与输入校验的流程:

1. 首先Struts2对客户端传来的数据进行类型转换

2. 类型转换完毕后再进行输入校验

3. 如果类型转换和输入校验都没有错误发生,那么进入execute方法(调用商业逻辑)

注意:如果类型转换不成功,也同样要进行输入校验

当把一个struts2标签的主键的theme设置成theme="simple"的时候,表示该主键不再会有一个struts
给它的错误提示。且不在进行排版,需要设计者自己排版,该主键的label属性不再起作用

在struts.xml配置文件里可以通过method="method"自定义Action类里的主方法public String method(),
且此时该Action类中的校验方法为public void validateMethod()。如果此Action类中存在validate()方法,
则在校验时,先调用validate()方法,然后再调研自定义的校验方法validateMethod()。

二、校验框架:register4.jsp
 
 任何一个Action类均可用xml校验框架来进行参数属性值的校验。xml文件与Action类文件在同一包下,且xml文件
的命名格式跟Action类名有狠大的关系:比如某Action类的名称为RegisterAction4。
 如果一个JSP页面在该RegisterAction4类中的主方法是ececute(),则对该JSP页面的校验框架名称为RegisterAction4-validation.xml,
即是:类名-validation.xml(Action类全局校验框架)。
 如果该JSP页面在RegisterAction4类中对应的主方法不是execute(),而是test()方法(通过<action>的method属性,
使method="test"得到),则对于该JSP页面属性的校验框架名称应为:RegisterAction4-test-validation.xml,
即:类名-主方法名-validation.xml(Action局部校验框架)。
DeviceCategoryAction-deviceCategoryAddNext-validation.xml
 如果同时提供RegisterAction4-validation.xml和RegisterAction4-test-validation.xml两个校验框架的话,
即使JSP页面对应RegisterAction4的主方法是test(),那么也要先进行RegisterAction4-validation.xml的校验,
再进行RegisterAction4-test-validation.xml
的校验。
xml文件的内容可为:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE validators PUBLIC "-//OpenSymphony Group//XWork Validator 1.0.2//EN"
 "http://www.opensymphony.com/xwork/xwork-validator-1.0.2.dtd ">

<validators>

 <field name="username"><!-- 校验一个属性 -->

  <!-- field-validator:表示对该属性的一次校验,其方式为type:此处为必须要填的校验。 type的值
   在com.opensymphony.xwork2.validator.validators包下的default.xml文件下可查询到
   每一个type都对应一个class,从中可以查看该type对应的类情况
  -->

  <field-validator type="requiredstring">

   <!--param属性可以出现0到多次。
    trim是校验方式type的值所对应的类的一个set方法的参数名称。true,表示赋给trim的值为true  -->
   <param name="trim">true</param>

   <!-- 表示一旦用户信息不符合整个校验规则的话输出的提示信息  -->
   <message>用户名不能为空!!</message>
  </field-validator>

  <field-validator type="stringlength">
   <param name="minLength">6</param>
   <param name="maxLength">10</param>
   <message>用户名必须在 ${minLength} 和 ${macLength} 之间</message>
  </field-validator>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值