Struts2.x---验证框架

本文详细介绍Struts2验证框架的使用方法,包括如何创建验证文件、配置验证规则及显示错误信息。涵盖必填项、数据类型、长度限制及正则表达式的验证,并解释如何在资源文件中自定义错误提示。

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

验证框架的基本使用

  • 验证开发框架类似于jQuery的开发框架的结构,只需要通过一些固定的配置就可以实现数据的验证处理.

之前实现的验证使用的都是validate()方法完成的,这个方法使用的是硬编码实现的,发现不适合实际的数据验证.
而对于验证框架,本质上的实现于validate()是相同的,唯一的区别在于,验证框架使用了配置文件的方式完成验证,而不再使用因编码的处理形式.

  1. 如果进行验证框架的使用,那么必须要有一个具体的验证框架执行结构文件.

    • 验证文件是需要与某一个具体的Action捆绑在一起的,所以首先需要建立一个:Action类名称-validation.xml文件
    • 这个文件保存在于Action类同样的包中
    • 对于此验证文件必须有合适的DTD文档声明
  2. 编写NewsAction-validation.xml文件

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE validators PUBLIC "-//Apache Struts//XWork Validator 1.0.2//EN" "http://struts.apache.org/dtds/xwork-validator-1.0.2.dtd">
<validators>
	<field name="news.nid"><!--  name 描述字段-->
			<field-validator  type="required"><!--  type="required"描述该字段必须存在-->
				<message>[验证框架]新闻id必须存在</message>	<!--  message 元素描述验证失败的提示信息-->
			</field-validator>
	</field>
		<field name="news.title"><!--  name 描述字段-->
			<field-validator  type="required"><!--  type="required"描述该字段必须存在-->
				<message>[验证框架]新闻标题必须存在</message>	<!--  message 元素描述验证失败的提示信息-->
			</field-validator>
	</field>
		<field name="news.price"><!--  name 描述字段-->
			<field-validator  type="required"><!--  type="required"描述该字段必须存在-->
				<message>[验证框架]新闻价格必须存在</message>	<!--  message 元素描述验证失败的提示信息-->
			</field-validator>
	</field>
		<field name="news.pubDate"><!--  name 描述字段-->
			<field-validator  type="required"><!--  type="required"描述该字段必须存在-->
				<message>[验证框架]新闻发布时间必须存在</message>	<!--  message 元素描述验证失败的提示信息-->
			</field-validator>
	</field>
</validators>

  • 页面中错误信息的集合还是 “allFieldErrors” ,使用EL表达式取出错误集合信息
	<form action="<%= addUrl%>" method="post">
		新闻id:<input type="text" name="news.nid" id="news.nid" value="1"/><span>	${FieldErrors['news.nid'][0]}</span><br/>
		新闻标题:<input type="text" name="news.title" id="news.title" value="世界和平"/><span>	${FieldErrors['news.title'][0]}</span><br/>
		新闻价格:<input type="text" name="news.price" id="news.price" value="4500.4"/><span>	${FieldErrors['news.price'][0]}</span><br/>
		发布日期:<input type="text" name="news.pubDate" id="news.pubDate" value="2018-08-11"/><span>	${FieldErrors['news.pubDate'][0]}</span><br/>
		<input type="submit" value="添加"/>
	</form>
  • 效果
    在这里插入图片描述
  • struts2的验证框架和jQuery验证框架都是使用固定的方式实现相关的验证规则.

常用的验证配置

在之前只是进行了简单的数据是否为空验证,那么实际上也可以实现更多的验证规则

  • 修改验证规则

  • int校检器

  • 新闻标号不允许为空,并且设置其长度数值范围.

	<field name="news.nid"><!--  name 描述字段-->
			<field-validator  type="required"><!--  type="required"描述该字段必须存在-->
				<message>[验证框架]新闻id必须存在</message>	<!--  message 元素描述验证失败的提示信息-->
			</field-validator>
			<field-validator type="int"><!--  字符串长度-->
				<param name="min">4</param>
		 		<param name="max">10</param>
		 <message>新闻id必须在${min}到${max}之间</message>
			</field-validator>
	</field>

在这里插入图片描述

  • 设置新闻标题的验证规则
  • 字符串校检器
	<field name="news.title"><!--  name 描述字段-->
			<field-validator  type="required"><!--  type="required"描述该字段必须存在-->
				<message>[验证框架]新闻标题必须存在</message>	<!--  message 元素描述验证失败的提示信息-->
			</field-validator>
			<field-validator type="stringlength">
				<param name="minLength">10</param>
				<param name="maxLength">20</param>
				<message>新闻标题必须在${minLength}到${maxLength}之间</message>
			</field-validator>
	</field>

在这里插入图片描述

  • 设置新闻价格的验证:
  • double 校检器
		<field name="news.price"><!--  name 描述字段-->
			<field-validator  type="required"><!--  type="required"描述该字段必须存在-->
				<message>[验证框架]新闻价格必须存在</message>	<!--  message 元素描述验证失败的提示信息-->
			</field-validator>
			<field-validator type="double">
				<param name="minExclusive">10.5</param>
				<param name="maxExclusive">5000.5</param>
				<message>新闻价格必须在${minExclusive}到${maxExclusive}之间</message>
			</field-validator>
	</field>

在这里插入图片描述

  • 设置日期验证
<field name="news.pubDate"><!--  name 描述字段-->
	<field-validator  type="required"><!--  type="required"描述该字段必须存在-->
		<message>[验证框架]新闻发布时间必须存在</message>	<!--  message 元素描述验证失败的提示信息-->
	</field-validator>
	<field-validator type="date">
		<param name="min">2019-02-18</param>
		<param name="max">2019-02-20</param>
		<message>日期新闻必须在${min}到${max}之间</message>
	</field-validator>
</field>

在这里插入图片描述
正则校检器

  • 对于验证操作,还可以使用正则完成,例如:在新闻标题中添加正则验证
	</field>
		<field name="news.title"><!--  name 描述字段-->
			<field-validator  type="required"><!--  type="required"描述该字段必须存在-->
				<message>[验证框架]新闻标题必须存在</message>	<!--  message 元素描述验证失败的提示信息-->
			</field-validator>
			<field-validator type="regex">
				<param name="trim">true</param>
				<param name="RegexExpression"><![CDATA[\w+@\w\.\w+]]></param>
				<message>请填写正确的邮箱格式</message>
			</field-validator>
	</field>
  • 不同版本的struts2 使用正则校检器方式不同

在这里插入图片描述

对于验证框架而言,本质上和validate()方法没有区别,依然都是在数据接收之后进行的验证处理,即使验证出错了,后台还是会一直在报错.

  • 错误类型提示信息
  • 例如:应该接收的是int型的数据,可是用户传递了错误的字符串,则错误的提示信息为以下内容

在这里插入图片描述

  • 为了防止这种错误的提示信息,需要在资源文件中添加对应字段的提示信息
  • 例如在Messages.properties文件中添加如下内容
invalid.fieldvalue.news.nid=新闻id必须是数字
invalid.fieldvalue.news.title=新闻标题必须是字符串
invalid.fieldvalue.news.price=新闻标题必须是数字
invalid.fieldvalue.news.pubDate=请输入正确的日期格式如"yyy-mm-dd"
  • 其中key开头的"invalid.fieldvalue."是固定的格式,后面的为具体的字段名称
  • 修改之后的效果

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值