知识大全 使用Validation框架验证数据
Posted 属性
篇首语:知是行的主意,行是知的功夫。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 使用Validation框架验证数据相关的知识,希望对你有一定的参考价值。
Struts2教程5:使用Validation框架验证数据 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
在《Struts 教程 使用validate方法验证数据》中曾讲到使用validate方法来验证客户端提交的数据 但如果使用validate方法就会将验证代码和正常的逻辑代码混在一起 但这样做并不利于代码维护 而且也很难将过些代码用于其他程序的验证 在Struts 中为我们提供了一个Validation框架 这个框架和Struts x提供的Validation框架类似 也是通过XML文件进行配置
服务端验证
下面将给出一个例子来演示如何使用Struts 的validation框架来进行服务端验证 我们可以按著如下四步来编写这个程序
【第 步】建立Action类(NewValidateAction java)
packageaction;
import opensymphony xwork ActionSupport;publicclassNewValidateActionextendsActionSupportprivateStringmsg; //必须输入privateintage; //在 和 之间publicStringgetMsg()returnmsg;publicvoidsetMsg(Stringmsg)this msg=msg;publicintgetAge()returnage;publicvoidsetAge(intage)this age=age;
下面我们来验证msg和age属性
【第 步】配置Action类 struts xml的代码
如下
<?xmlversion= encoding= UTF ?><!DOCTYPEstrutsPUBLIC //ApacheSofareFoundation//DTDStrutsConfiguration //EN dtd ><struts><packagename= demo extends= struts default namespace= /test ><actionname= new_validate class= action NewValidateAction ><resultname= input >/validate_form jsp</result><resultname= success >/validate_form jsp</result></action></package></struts>
【第 步】编写验证规则配置文件
这是一个基于XML的配置文件 和struts x中的validator框架的验证规则配置文件类似 但一般放到和要验证的 class文件在同一目录下 而且配置文件名要使用如下两个规则中的一个来命名
<ActionClassName> validation xml<ActionClassName> <ActionAliasName> validation xml
其中<ActionAliasName>就是struts xml中<ation>的name属性值 在本例中我们使用第一种命名规则 所以文件名是NewValidateAction validation xml 文件的内容如下
<?xmlversion= encoding= UTF ?><!DOCTYPEvalidatorsPUBLIC //OpenSymphonyGroup//XWorkValidator //EN validator dtd ><validators><fieldname= msg ><field validatortype= requiredstring ><message>请输入信息</message></field validator></field><fieldname= age ><field validatortype= int ><paramname= min > </param><paramname= max > </param><message>必须在 至 之间</message></field validator></field></validators>
这个文件使用了两个规则 requiredstring(必须输入)和int(确定整型范围) 关于其他更详细的验证规则 请读者访问来查看
【第 步】编写数据录入JSP页
在Web根目录中建立一个validate_form jsp文件 代码如下
<%@pagelanguage= java import= java util * pageEncoding= GBK %><%@taglibprefix= s uri= /struts tags %><linkrel= stylesheet type= text/css <s:urlvalue= /styles/styles css /> ><> <head><title>验证数据</title> </head> <body><s:formaction= new_validate namespace= /test ><s:textfieldname= msg label= 姓名 /><s:textfieldname= age label= 年龄 /><s:submit/></s:form> </body> </>
大家要注意一下 如果在struts xml的<package>标签中指定namespace属性 需要在<s:form>中也将namespace和action分开写 如上面代码所示 不能将其连在一起 Struts 需要分开的action和namespace 如下面的代码是错误的
<s:form action= /test/new_validate > </s:form>
在上面的程序中还使用了一个styles css来定制错误信息的风格 代码如下
label font style:italic; errorLabel font style:italic;color:red; errorMessage font weight:bold; color:red;
需要在Web根目录中建立一个styles目录 并将styles css
假设Web工程的上下文路径是validation 可以使用如下的URL来测试这个程序
显示结果如图 所示
图
客户端验证
在Struts 中实现客户端验证非常简单 只需要在<s:form>中加入一个validate属性 值为true 如<s:form validate= true > </form>即可
验证嵌套属性
有一类特殊的属性 即这个属性的类型是另外一个JavaBean 如有一个User类 代码如下
packagedata;
publicclassUserprivateStringname;privateintage;publicStringgetName()returnname;publicvoidsetName(Stringname)this name=name;publicintgetAge()returnage;publicvoidsetAge(intage)this age=age;
在NewValidateAction类中加一个user属性 代码如下
packageaction;
import opensymphony xwork ActionSupport;importdata User;publicclassNewValidateActionextendsActionSupportprivateStringmsg;privateintage;privateUseruser;publicStringgetMsg()returnmsg;publicvoidsetMsg(Stringmsg)this msg=msg;publicintgetAge()returnage;publicvoidsetAge(intage)this age=age;publicUsergetUser()returnuser;publicvoidsetUser(Useruser)this user=user;
如果要验证NewValidateAction中的user属性 可以使用visitor验证器 操作过程如下
首先在NewValidateAction validation xml中加入一个<field>标签 代码如下
<?xmlversion= encoding= UTF ?><!DOCTYPEvalidatorsPUBLIC //OpenSymphonyGroup//XWorkValidator //EN validator dtd ><validators>……<fieldname= user ><field validatortype= visitor ><paramname= context >abc</param><paramname= appendPrefix >true</param><message>User:</message></field validator></field></validators>
其中context参数将作为验证User类属性的文件名的一部分 如user属性返回一个User对象 那么用于验证User对象属性的文件名为User abc validation xml 这个文件要和User class文件在同一个目录中 appendPrefix表示是否在字段里加user 如果为true Struts 就会使用user name在form提交的数据中查找要验证的数据 这个属性的默认值是true 如果出错 Struts 会将<message>标签中的信息加到User abc validation xml文件中的相应错误信息前面
User abc validation xml文件的内容如下
<?xmlversion= encoding= UTF ?><!DOCTYPEvalidatorsPUBLIC //OpenSymphonyGroup//XWorkValidator //EN validator dtd ><validators><fieldname= name ><field validatortype= requiredstring ><message>请输入name</message></field validator></field><fieldname= age ><field validatortype= int ><paramname= min > </param><paramname= max > </param><message>必须在 至 之间</message></field validator></field></validators>
下面修改validate_form jsp 代码如下
<s:formvalidate= true action= new_validate namespace= /test ><s:textfieldname= msg label= 姓名 /><s:textfieldname= age label= 年龄 /><s:textfieldname= user name label= 姓名 /><s:textfieldname= user age label= 年龄 /><s:submit/></s:form>
大家可以看到 最后两个<s:textfield>的name属性是user name和user age 正好是加了前缀的
现在重新访问 验证界面如图 所示
相关参考
知识大全 Struts2 Validation框架的一些事宜
Struts2Validation框架的一些事宜 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
知识大全 Struts中如何基于validation.xml来启用客户端验证
Struts中如何基于validation.xml来启用客户端验证? 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快
Struts1.x系列教程(10):Validator验证框架入门 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一
Struts1.x系列教程(11):Validator验证框架高级应用 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶
知识大全 详解Struts中Validator验证框架的使用
详解Struts中Validator验证框架的使用 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
浅谈Struts2验证框架及用户注册 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! Struts
php代码复制代码代码如下:<?phpclassCaptcha_codevar$width=;var$num=;var$height=;var$name=randcode;publicfun
Struts1.x系列教程(2):简单的数据验证 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
PHPWeb开发学习实录:使用操作符验证表单数据 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
Struts--使用validate方法验证数据 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!