struts入门之验证(1)

来源:互联网 发布:淘宝网上代购是真的吗 编辑:程序博客网 时间:2024/04/30 22:53

今天我看了看struts的验证的问题。

哇,原来验证也这么强大。真不愧为struts。

我是接着我上次的那个Demo做的。

如果你愿意看的话,可以看这里  。

 

其实也没有什么地方可以改的。就是点点而已。

就是在form里面多加了几个textfield。

 

      <s:form action="login" method="POST" namespace="/test1/test2">
        <s:textfield label="姓名" name="name"/>
        <s:textfield label="性别" name="sex"/>
        <s:textfield label="年龄" name="uage"/>
        <s:textfield label="邮件" name="uemail"/>
        <s:reset value="重置"/>
        <s:submit value="提交"/>
      </s:form>

然后就是在action的java类里面把字段对应的变量加上。

 

方法有很多种。

 

1。在action里面验证。方法是重写public  void   validate()方法。

 

2。在xml文件里面验证。

 

我们创建一个xml文件。

名字为:LoginAction-validation.xml  他的命名规则是:“action的类名”+“-validation.xml ”。位置是放在和action编译的class文件在同一个目录。

 

具体内容:

 

<?xml version="1.0" encoding="GBK" ?>
<!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="name">
        <field-validator type="requiredstring">
            <message>姓名要求不能为空</message>
        </field-validator>
    </field>
    <field name="uage">
        <field-validator type="int">
            <param name="min">18</param>
            <param name="max">30</param>
            <message>年龄必须在${min}和${max}之间。</message>
        </field-validator>
    </field>
    <field name="sex">
        <field-validator type="requiredstring">
            <message>性别要求不能为空</message>
        </field-validator>
    </field>
    <field name="uemail">
        <field-validator type="email">
            <message>请输入正确的电子邮件</message>
        </field-validator>
    </field>
</validators>

 

我上次的action的class文件放在D:/chengxv/tomcat/webapps/basic/WEB-INF/classes/actions。所有这次我这个XML文件也要放在这里。对于上面的那个XML文件我不想多做解释。格式急速这样的。唯一想说的是field-validator—— type   问题,这个是告诉验证框架我们将要验证的类型。在最后我将把这个type贴出来。注意下type检查的类型要和action里面的变量的类型对应哦。比如说,在action里面的uage是int型,在XML文件里面就不能用double型来检验。

 

 

改动就这么多。我们运行下,我们什么都不填提交,看看效果。

 

咦?怎么邮件没有检查啊。O(∩_∩)O~。struts也是通人性的。他想,你娃娃懒嘛,邮件都不填,那我就当成你不想输入邮箱嘛。等有输入我才给你检查,没有输入我就跳过,你懒,我更懒。

 

原来struts对邮件是这样的哦!

 

 

这个是典型的服务器端验证。大家都知道,这个有点影响服务器撒。

 

struts能不能进行客服端验证喃。答案肯定是肯定的。我查了查,挺简单的。我就这样做的:

<s:form action="login" method="POST" namespace="/test1/test2" validate="true">

 

跟上面比对下,就加了个红色的。然后就Ok了。很好很强大。

 

 

我有冒出一个问题。我能不能挨着挨着检查,一有错,我就返回错误,不检查下面的了。仔细看了看文档确实有。叫

Short-Circuiting短路验证

也很简单,举一个例,剩下的依葫芦画瓢。

原来的:

<field-validator type="requiredstring">

改过的:

<field-validator type="requiredstring" short-circuit="true">

具体要怎么短路,就看你了。

 

这个是结果:

看,他就验证到性别,下面的年龄就没有验证了,可以对比下上面的结果。

 

全部输入后结果:

 

 

 

ok,今天struts我就做了这么多。

 

下面我把那个type里面的类型全部贴出来。

 

 

这个是官方文档提供的。其实还有可以自定义验证类型。下回研究。

 

 

烧水,洗澡。

 

 

 

 

 

 

 

 

原创粉丝点击