ITPub博客

首页 > 应用开发 > IT综合 > Struts数据验证笔记 (转)

Struts数据验证笔记 (转)

原创 IT综合 作者:amyz 时间:2007-11-16 17:11:19 0 删除 编辑
Struts数据验证笔记 (转)[@more@] 

struts数据验证笔记XML:namespace prefix = o ns = "urn:schemas-microsoft-com:Office:office" />

Mailto:rainy14f@sohu.com">rainy14f@sohu.com

实践平台:windows2000 Pro. Jbuilder9.0. tomcat. Struts1.0

 

1.  关键字:ApplicationResources.properties  ActionForm  ActionErrors  ActionError

  web.xml 

 

2.  大体步骤:可以在ActionForm的validate方法也可以在Action的perform方法中验证。两种方式的区别据说在于web.xml中把”validate”设置为”true”那么在执行perform之前会先执行ActionForm的validate方法(我在实验的时候发现web.xml的validate元素设置为false则无法运行,把这行删掉也一样会先执行validate方法,还不知道是为什么)。在WEB.XML文件中设置资源文件和验证值;在资源文件中设置错误处理需要显示的提示;在Action或ActionForm类中编写错误处理代码;在JSP页面的适当位置加入以使它在有错误的时候把错误显示出来。

 

3.  具体做法:

 

a)  在web.xml文件中设置如下:

  <servlet>

  action

  org.apache.struts.action.ActionServlet

 

  debug

  2

   

 

  config

  /WEB-INF/struts-config.xml

 

 

  validate

  true

 

 

  application

  ApplicationResources

 

  2

 

资源文件的的由其位置决定,如果是在classes/com/res目录下,那么就要设置为com.res.ApplicationResources。资源文件以properties为扩展名。

 

 

b)  在WEB-INF目录下的classes子目录中建立ApplicationResources.properties文件。

文件的内容由成对的key和 value组成。比如,设置如下:

index.title=Struts Tutorial

index.title2=Struts教学

errors.header=


Errors

    errors.footer=


error.a=

  • Field A can't be empty

    error.b=

  • Field B can't be empty

  •     errors.header和errors.footer是出错时struts自动加入的头和尾。自己定义的错误就可以写在下面error.a,error.b,等号后面是要显示的内容。

    c)  在Action中编写错误处理的代码。

    这里用到两个类ActionErrors和ActionError,他们都是包含在org.apache.struts.Action包里。用ActionError生成新的错误,把所有的错误储存在一个类似ArrayList的ActionErrors对象里。最后动态生成ActionForward对象,以返回原页面。

      ActionErrors errors = new ActionErrors(); //生成新的错误对象容器

      if( form.getA().equals("") || form.getA()==null ) { //如果有错误

      ActionError error = new ActionError("error.a");  //生成新错误

      errors.add(ActionErrors.GLOBAL_ERROR, error); //加入到错误容器中

    }

     

      if( !errors.empty()) {  //判断错误容器是否为空,不空的话就要显示出来

      saveErrors(httpServletRequest, errors ); //保存错误

      String str = actionMapping.getInput(); //得到使程序返回的ActionForward

      return new ActionForward(str);  //返回原页面

      }

      如果要在ActionForm中验证,把这些语句写在其validate方法中,并且不需要saveErrors及其后面的语句,直接把errors作为返回值返回就可以了。

    d)  在页面中显示错误提示

    显示错误的页面就是前面ActionForward所返回的页面,也就是按了submit后forward到这个Action的jsp文件。当然也可以定义成别的jsp文件,但是上面的代码就要改一改。

    在页面的适当位置(一般是表单上方)加入标志

    那么,当有错误发生时(在Action里判断的),就会按照资源文件里的设置显示出错误提示。

    如上面的ApplicationResources.properties 所示,就会象下面这样:

     


      Errors

    ·  Field A can't be empty


     

    e)  进阶

      另一种使用了Java.text.MessageFormat类,可在消息中指定替换字符串,例如:

    error.invalid=Invalid Number{0}

    创建一个错误消息:

    ActionError error = new ActionError(‘error.invalid’,new Double(-1));

    JSP页显示:Invalild Number –1

      还有获得特定消息的错误关键字:

    public String getKey()

      还有获得替换字符串数组:

    public String[] getValues()


    效果示例:

    输入表单:

    JBuilder Generated Struts JSP for ActionFoRM validation.MyForm




     

    出错后返回并提示:

    JBuilder Generated Struts JSP for ActionForm validation.MyForm


    Errors

    • Field A can't be empty




     


    来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/10752019/viewspace-982706/,如需转载,请注明出处,否则将追究法律责任。

    下一篇: 中秋思绪 (转)
    请登录后发表评论 登录
    全部评论
    • 博文量
      3984
    • 访问量
      7363131