`
Molisa
  • 浏览: 34368 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

struts2校验框架

阅读更多
校验框架
1.使用struts自带的校验器

  validate方法实现校验的原理:
  程序执行到Action的时候,先判断有没有validate方法,如果实现了先执行validate,再执行execute.如果没有就直接执行execute

  struts框架的校验原理:
  程序执行到Action时,但是还没有执行到里面的方法时将其拦截,转而执行校验器,校验器执行完毕后返回继续执行Action
  所以要先做两件事:1.配置拦截器(让Action暂停,执行校验部分) 2.配置校验器(通过配置文件找到对应的校验器以实现校验器功能)
 
  校验器分为:字段校验器(field-specific FieldValidator),普通校验器(PlainValidator)
  非字段校验器(Non-Field Validator)可以配置字段校验器和普通校验器
  字段校验方式只能配置字段校验器

  给Action的字段配置校验器,比如LogginAction.java里有属性username和password,配置文件LogginAction-validation.xml里对两个字段

进行配置:
  <validators>
    #字段方式
    <field name="username">
        <field-validator type="requiredstring">
            <message>no null</message>
        </field-validator>
    </field>
   
    #非字段方式
    <validator>
        <validator type="requiredstring">
             #param在申明变通校验器的时候不是必须的,因为普通校验器只返回actionerror(Action级错误)
             <param name="fieldName">passeword</param>
             <message>password empty.</message>
        <validator/>
    </validator>
  </vaildators>



struts提供的校验器有:

  • required
  • requirestring
  • int
  • date
  • expression  #普通校验器,只能在字段校验方式下使用
  • fieldexpression
  • email
  • url
  • visitor
  • conversion
  • stringlength
  • reqex


visistor ,short-circuiting validator可在字段和非字段方式下使用

断路校验器的使用:

非字段校验方式:
<validator type="requiredstring" short-circuit="true">
   <param name="fieldName">age</param>
   <message>not null</messgae>
</vlidator>

字段校验方式:
 
<field name="confirm">
        <field-validator type="requiredstring" short-circuit="true">
            <param name="expression">(password==confirm)</param>
            <message><![CDATA[confirm must be the same as the the password....]]></message> 
        </field-validator>
   </field>

   

自定义校验器


一旦创建了 validators.xml struts.xml不用自动装载default.xml

validators.xml
<?xml version="1.0" encoding="UTF-8"?>
<xml-body>
   <validators>
   	   <validator name="strandum" class="example.StrNumFeildValidator" />
   	   <validator name="requiredstring" class="com.opensymphony.xwork2.validator.validators.RequiredStringValidators" 

/>
   </validators>
</xml-body>


由sturts.xml转到自定义的校验器处进行校验处理

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
        "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
        "http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
 <include file="struts-default.xml" />
 <constant name="struts.devMode" value="true" />
    <package name="default" extends="struts-default">
        <action name="HelloWorld" class="example.HelloWorld">
        	<interceptor-ref name="validationWorkflowStack"><!--open the vali option-->
            <result name="success">/hello.jsp</result>        
        </action>
    </package>
</struts>



所以在自定义的校验器里可以直接配置
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE validators PUBLIC
        "-//Opensymphony Group//XWork Validators 1.0.2//EN"
        "http://www.opensymphony.com/xwork/xwork-validator-1.0.2.dtd">
        
       <validators>
    <field name="Password">
        <field-validator type="strandnum">
            <message>no null</message> 
        </field-validator>
    </field>
        <validator>
        <validator type="username">
                <param name="fieldName">passeword</param>
             <message>password empty.</message>
        <validator/>
    </validator>
  </vaildators>
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics