Java

本类阅读TOP10

·使用MyEclipse开发Struts框架的Hello World!(录像1)
·hibernate配置笔记
·AOP编程入门--Java篇
·linux下Tomcat 5.0.20 与 Apache 2 安装/集成/配置
·在win2003下整合了整合Tomcat5.5+ apache_2.0.53+ mod_jk_2.0.47.dll
·构建Linux下IDE环境--Eclipse篇
·Jsp 连接 mySQL、Oracle 数据库备忘(Windows平台)
·ASP、JSP、PHP 三种技术比较
·Tomcat5.5.9的安装配置
·AWT GUI 设计笔记(二)

分类导航
VC语言Delphi
VB语言ASP
PerlJava
Script数据库
其他语言游戏开发
文件格式网站制作
软件工程.NET开发
Struts数据验证笔记

作者:未知 来源:月光软件站 加入时间:2005-2-28 月光软件站

 

Struts数据验证笔记

<For Struts1.0> rainy14f@sohu.com

实践平台:Windows2000 Pro. Jbuilder9.0. Tomcat. Struts1.0

 

1.  关键字ApplicationResources.properties  ActionForm  ActionErrors  ActionError

           web.xml 

 

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

 

3.  具体做法

 

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

  <servlet>

    <servlet-name>action</servlet-name>

    <servlet-class>org.apache.struts.action.ActionServlet</servlet-class>

    <init-param>

      <param-name>debug</param-name>

      <param-value>2</param-value>

    </init-param>

    <init-param>

      <param-name>config</param-name>

      <param-value>/WEB-INF/struts-config.xml</param-value>

    </init-param>

    <init-param>

      <param-name>validate</param-name>

      <param-value>true</param-value>

    </init-param>

    <init-param>

      <param-name>application</param-name>

      <param-value>ApplicationResources</param-value>

    </init-param>

    <load-on-startup>2</load-on-startup>

  </servlet>

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

 

 

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

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

index.title=Struts Tutorial

index.title2=Struts教学

errors.header=<hr><h3>Errors</h3><ul>

errors.footer=</ul><hr>

error.a=<li>Field A can't be empty

error.b=<li>Field B can't be empty

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

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

这里用到两个类ActionErrorsActionError,他们都是包含在org.apache.struts.Action包里。用ActionError生成新的错误,把所有的错误储存在一个类似ArrayListActionErrors对象里。最后动态生成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所返回的页面,也就是按了submitforward到这个Actionjsp文件。当然也可以定义成别的jsp文件,但是上面的代码就要改一改。

在页面的适当位置(一般是表单上方)加入标志<html:errors />

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

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

 


           Errors

·         Field A can't be empty


 

e)         进阶

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

error.invalid=<b>Invalid Number{0}</b>

创建一个错误消息:

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




 




相关文章

相关软件