posts - 297,  comments - 1618,  trackbacks - 0
      说明:该文翻译自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”方法。

下一章:本地化输出

上一章:选择结果

posted on 2007-08-01 08:49 阿蜜果 阅读(3943) 评论(2)  编辑  收藏 所属分类: Struts2


FeedBack:
# re: Struts2学习进阶(六)——验证输入值
2007-08-01 12:12 | dreamstone
不知道现在struts2的商业应用广泛不。  回复  更多评论
  
# re: Struts2学习进阶(基础篇六)——验证输入值
2007-08-06 09:35 | Adma
关于验证xml的文件可以这样命名
该类名-别名(定义的action名)-validation.xml
这样的话,可以针对每个不同的业务进行数据验证。
  回复  更多评论
  

只有注册用户登录后才能发表评论。


网站导航:
 
<2007年8月>
2930311234
567891011
12131415161718
19202122232425
2627282930311
2345678

      生活将我们磨圆,是为了让我们滚得更远——“圆”来如此。
      我的作品:
      玩转Axure RP  (2015年12月出版)
      

      Power Designer系统分析与建模实战  (2015年7月出版)
      
     Struts2+Hibernate3+Spring2   (2010年5月出版)
     

留言簿(262)

随笔分类

随笔档案

文章分类

相册

关注blog

积分与排名

  • 积分 - 2280246
  • 排名 - 3

最新评论

阅读排行榜

评论排行榜