Java学习者论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

手机号码,快捷登录

恭喜Java学习者论坛(https://www.javaxxz.com)已经为数万Java学习者服务超过8年了!积累会员资料超过10000G+
成为本站VIP会员,下载本站10000G+会员资源,购买链接:点击进入购买VIP会员
JAVA高级面试进阶视频教程Java架构师系统进阶VIP课程

分布式高可用全栈开发微服务教程

Go语言视频零基础入门到精通

Java架构师3期(课件+源码)

Java开发全终端实战租房项目视频教程

SpringBoot2.X入门到高级使用教程

大数据培训第六期全套视频教程

深度学习(CNN RNN GAN)算法原理

Java亿级流量电商系统视频教程

互联网架构师视频教程

年薪50万Spark2.0从入门到精通

年薪50万!人工智能学习路线教程

年薪50万!大数据从入门到精通学习路线年薪50万!机器学习入门到精通视频教程
仿小米商城类app和小程序视频教程深度学习数据分析基础到实战最新黑马javaEE2.1就业课程从 0到JVM实战高手教程 MySQL入门到精通教程
查看: 1510|回复: 0

Struts1中的ActionErrors和ActionMessage

  [复制链接]

该用户从未签到

发表于 2011-10-20 10:56:25 | 显示全部楼层 |阅读模式
当Formbean 为动态bean时,在action中无法对Formbean数据进行验证,因为Formbean没有具体实现类。action中无法引用 ActionErrors/ActionMessages: (ActionError和ActionMessage已经被废除了,不推荐使用)
有时候你需要向用户提供相关处理信息,包括表单验证时发现错误等。
1. 相关类介绍:
ActionMessage:用于保存一个与资源束对应的提示信息。主要构造函数如:
ActionMessage(String message);
ActionMessage(String message,paramater)。//不常用。

ActionMessages:用于保存多个ActionMessage。并在HTML:errors 和html:messages中起作用。
主要构造函数:
ActionMessages().
主要方法是add(String property,ActionMessage message)
ActionMessages 有一个HashMap类型messages保存多个ActionMessage对象,每个ActionMessage对象都有唯一的一个property 标识。这个property可以是自定义的任意字符串,也可以由 org.apache.struts.action.ActionMessages.GLOBAL_MESSAGE指定
html:messages/html:errors使用property属性访问某个资源 ,前提是在properties文件里声明了有关property的属性!


当然了,要用到这些属性的时候,必须在structs-config.xml文件中定义。当然对于错误的信息,必须在<Action>中注明alidate() 属性为true,而且input 属性也是必须的。



但这个文件必须放在和.class文件夹同目录的空间里。默认的是放在resources中 的Application.properties,当然要实现国际化的话,就要单独编写文件 Application_zh.properties(中国国际化)和Application_en.properties(美国)当然要实现其他国家的语言,就需要单独在浏览器中设置和查看他们国家的相对语法了!

ActionErrors:用于保存一个与资源束对应的错误信息。用法跟ActionMessages差不多。 这就是专门用于Formbean里面对于数据的输入的验证了,在确认表单传递确认的validate()方法里,返回的就是ActionErrors 对象。同样的是调用的是properties文件里规定的属性。用到的标签同样是<html:errors>或<html:messages>当然这里面会有些footer  header prefix suffix 属性,这些都是简单的对文字格式的处理。
有时会用到国际化的标签<bean:message>(前提是引入<%@ taglib prefix="bean" uri="http://jakarta.apache.org/struts/tags-bean" %>)有了这个标签就一切搞定了!


2. 版本:
struts1.1中用ActionErrors报告错误,用ActionMessages提供信息。
在struts1.2中使用ActionMessages提供信息和错误,不赞成使用ActionError
struts1.3中已经没有ActionError类了。

3. AtionErrors和ActionMessages的区别

1. ActionErrors是ActionMessages的一个子类,功能几乎相同,不同点在于标签<html:errors/>和<html:messages>的使用上的区别。
html: errors指定了footer和header属性。默认值为errors.header和errors.footer,需要时可以自己指定。如果资源属性文件配置了 errors.header和errors.footer,则任何时候使用html:errors时开头和结尾都是这两个属性对应的资源信息。
而html:message默认情况下没有errors.header和errors.footer值,当然可以自己指定。

2.    在Action类中,对于定义了ActionMessage类的方法的时候,需要对errors进行web服务器存储。这里有两种方法。
         request.setAttribute(Globals.ERROR_KEY,errors);
         this.saveErrors(request, errors); 两种方法都能实现,都是放在request作用域里的。这样,才能想相对应的properties文件里调用 相对应的error.username(举例)里免的属性。(因为对于每个属性,都是一个HashMap类,所以每对应一个key,都有一个attribute对应,这样就不会调用出错!)
3.     因为 AtionErrors和ActionMessages都是对于信息的处理。相当于坏人和好人,没必要定义两个类。只需要定义一个 人 类就行,对于每个不同属性的人,给他们想对应的 好人 或 坏人的 属性就可。这就是 AtionErrors和ActionMessages两者之间较好理解的解释了!
回复

使用道具 举报

该用户从未签到

发表于 2012-3-23 22:04:57 | 显示全部楼层
一起交流!楼主给咱们提供机会了
回复 支持 反对

使用道具 举报

该用户从未签到

发表于 2012-3-25 10:49:01 | 显示全部楼层
路过,学习............
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|Java学习者论坛 ( 声明:本站资料整理自互联网,用于Java学习者交流学习使用,对资料版权不负任何法律责任,若有侵权请及时联系客服屏蔽删除 )

GMT+8, 2024-5-17 19:03 , Processed in 0.350661 second(s), 34 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表