Struts2学习进阶(基础篇六)——验证输入值

Struts2学习进阶(基础篇六)——验证输入值
      说明:该文翻译自 struts- 2.0.8 \docs\docs\validating-input.html

      在编写Action这一章节中,我们通过几行java代码来验证usernamepassword。当然,在大型的应用程序中,这将是个很耗时的工作,即使这几行java代码也可能变成维护的重大负担。

     令人高兴的是,本框架提供了一个验证框架,这个验证框架能够对输入数据进行后台验证。

一.             代码

     验证能够通过XML文档来描述,或者使用注解(annotations)。XML文档的名称以Action的名字为开头,以“-validation”作为文件名后缀。当我们想要验证Logon Action的时候,我们文件名可以命名为Logon-validation.xmlLogon-validation.xml的代码如下:

<!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="username">
        <field-validator type="requiredstring">
            <message>Username is required</message>
        </field-validator>
    </field>
    <field name="password">
        <field-validator type="requiredstring">
            <message>Password is required</message>
        </field-validator>
    </field>
</validators>

     Logon.java后我们创建一个Logon-validation.xml文件。并将上述粘贴到该文件中。

     页面第一次显示的时候,我们不想引发验证。我们需要在被告诉有输入不正确前有机会输入数据。通过验证的一种方式是找到一个ActionSupport基类提供的特定的“input”方法。为了这样做,我们需要编辑Welcome页面和Logon的映射。

     Welcome.jsp的修改代码如下:

    <li><a href="<s:url action="Logon"/>">Sign On</a></li>
    <li><a href="<s:url action="Logon_input"/>">Sign On</a></li>

    struts.xml的修改代码如下:

    <action name="Logon" class="tutorial.Logon">
    <action name="Logon_*" method="{1}" class="tutorial.Logon">

二.             代码是如何工作的?

    为了打开Logon表单,Welcome页面涉及了Logon_input

     1. 框架将这个引用于Logon_*映射相匹配起来;

     2. “method={1}”属性被“method=input”替换;

     3. 框架调用了Logon Action类的input方法;

     4. 因为“input”在一个特殊的方法的列表中,所以验证框架将不会调用;

     5.  默认的input方法返回一个“input”作为返回结果;

     6. 框架展现“Logon.jsp”来作为回应结果,没有带有任何的验证信息。

     为了提交Logon表单,Login页面引用了Logon

     1. 框架为目标Action——Logon提供验证;

     2. 找到Logon-validation.xml文件,框架为该类创建了一个验证对象,这个验证对象基于XML文件;

     3. 验证器对输入的数据产生作用;

     4. 如果验证失败,错误信息被添加到内部序列中;

     5. 当所有的验证器都已经执行后,如果框架发现有错误信息产生,它寻找“input”结果对应的页面,而不调用Action类;

     6. 如果通过验证,调用Action的方法,返回“success”对应的结果。

三.             需要记住的东西

     框架提供了一个验证框架。一个输入域可以绑定一个验证器集合。如果验证失败,框架将会返回输入信息页,并显示错误信息。为了通过验证,一个特殊的“input”方法将被调用,来代替默认的“execute”方法。

下一章:本地化输出

上一章:选择结果

你可能感兴趣的:(Struts2学习进阶(基础篇六)——验证输入值)