• 第10章-验证框架 --- 验证器类型



    第10章-验证框架 --- 验证器类型

      可以把验证器分为两个类型: 字段验证器和动作验证器。

      字段验证器:只验证提交的表单内的单个字段。

      动作验证器:一般验证提交的表单内多个字段的关系。(比如,录入产品信息的时候,产品进价不能高于售价)

     

      无论是哪种验证器,都需要考虑以下几个问题:

      1.验证谁?

      2.使用什么条件验证?

      3.不满足条件显示什么结果?

      4.不满足验证条件时,显示的结果出现在页面的什么位置?

     

    (一)字段验证器

      字段验证器用来验证提交的表单内的单个字段,在验证文件里: 

    复制代码
    <validators>
        <field name="user.account">
            <field-validator type="requiredstring">
                <message>请输入账号</message>
            </field-validator>
        </field>
        
        <field name="user.name">
            <field-validator type="requiredstring">
                <message>请输入姓名</message>
            </field-validator>
        </field>
        
        <field name="user.age">
            <field-validator type="int">
                <param name="min">18</param>
                <message>年龄必须在18岁以上,您输入的是${user.age}</message>
            </field-validator>
        </field>
    </validators>
    复制代码

     

      <validators>元素作为整个验证文件的根元素。

      <validators>元素的<field>子元素就是字段验证器,<field>元素的name属性就是这个字段验证器要验证的那个字段。

      一个<field>元素可以有多个<field-validator>元素

      每一个<field-validator>元素是对这个字段的一种验证条件,它的type属性就是具体的验证器,在这里引用了内置的int验证器。

      还可以给<field-validator>元素添加<param>子元素来设置验证条件的参数,添加<message>子元素来设置验证错误时返回的信息。在<message>元素中写出的文本将直接作为错误的信息返回,如果<message>元素存在key属性,它将引用国际化信息。

     

    (二)动作验证器

      与字段验证器只验证单个字段相比,动作验证器应用于整个动作(Action),一般用于验证提交的表单内的多个字段的关系,当然也可以验证单个字段。

      示例,假定要求输入的账号也为数字,并要求输入的age值要大于账号的值。

      那么在验证文件里,可以按照如下写法:

      <validator type="expression">

        <param name="expression"><![CDATA[user.age >= user.account]]></param>

        <message>年龄必须在${user.account}岁以上,您输入的是${user.age}</message>

      </validator>

     

      <validators>元素作为整个验证文件的根元素。

      <validators>元素的<validator>子元素就是动作验证器。其type属性为expression,引用了内置的表达式验证器,这个验证器需要一个name属性作为expression的<param>子元素为其指定表达式。

      对于动作验证器,它返回的错误信息并不会直接显示在<s:textfield name="user.age"/>对应的文本框上方,需要使用<s:actionerror/>标签去引用。

      代码如下:

    复制代码
        <s:fielderror/>
            用户注册:
            <hr/>
            <s:actionerror/>
            
            <s:form action="/registerAction.action" method="post">
            <s:textfield name="user.account" label="账号"/>
            <s:textfield name="user.name" label="姓名"/>  
            <s:submit value="注册"/>       
            </s:form>
  • 相关阅读:
    Embedding技术在商业搜索与推荐场景的实践
    Elasticsearch 性能调优:段合并(Segment merge)
    elasticsearch关于index性能优化
    nginx优化图片防盗链
    NextCloud搭建
    nginx优化限制连接请求limit_req
    Android 去除标题栏和状态栏的方法
    Struts2 集合属性接收问题探讨
    解决JAVA调用mysqldump备份数据库时文件为空的问题
    Hibernate自定义字段查询 注意事项
  • 原文地址:https://www.cnblogs.com/baiduligang/p/4247458.html
Copyright © 2020-2023  润新知