html:errors标签与ActionMessage和Struts资源文件

在Struts中我们用html:errors标签在JSP页面上输出验证过程中产生的错误信息,错误信息一般来自于消息资源文件 (xxx.properties文件,一般位于classes目录下,文本文件),当然错误信息也可以是不是资源文件中的文本消息,而是自定义的文本。接 下来将详细讲述。

  先来看一个简单例子

1、资源文件错误信息来源(其格式为key=value)

error.test=thisisatesterror.

2、 JSP页面中用于显示错误信息标签

  1. < html:errors property = "testerror" />

<html:errors property="testerror"/>

3、ActionFormBean的validate()方 法中产生错误信息

  1. ActionErrorserror= new ActionErrors();
  2. error.add("testerror" , new ActionMessage( "error.test" ))
  3. return error;

ActionErrors error = new ActionErrors(); error.add("testerror",new ActionMessage("error.test")) return error;
  这个例子的功能就是在ActionFormBean的validate()方法中产生一条名为:testerror 的错误信息,错误信息息是资源文件中key为error.test的值。然后在页面上用html:errors标签输出testerror这条错误信息。
   这是最常用的一种功能,所有的错误信息都在资源文件里面。
  有人会问,错误信息只能存放在资源文件中吗,其实不是这样。不需要资源文件也可以 产生错误信息。
  我们再来看一下ActionMessage的另一种构造方法:

  1. ActionMessage(Stringkey, boolean isresource)

  ActionMessage(String key,boolean isresource)
  如果isresource值为true,则表示key是资源文件中的key,产生的消息就是与key相对应的消息
   如果isresource值为false,则表示key为一条普通的消息。
  如果上面的error.add改为 error.add("testerror",newActonMessage("这是一条自定义消息",false",));那么页面上显示的将是: 这是一条自定义消息.
  另外还可以用ActionMessage产生复合消息,比如我们要输出:xxx不能用作用户名,其中xxx是一个变量。

   首先我们在资源文件中加一个条复合消息
  testmsg={0}不能用作用户名。这里{0}是要被替换的参数。
  我们再来看一 下ActionMessage的另一中构造方法

  1. ActionMessage(Stringkey,Objectvalue0);

  ActionMessage(String key,Object value0);
  也就是说用value0的值来替换{0}
  我们修改error.add为 error.add("testerror",newActonMessage("testmsg",""))
  那么JSP页面上将显 示:不能用作用户名。
  当然在一条复合消息中也可带多个参数,参数依次为{0},{1},{2}或更多
  例 如:loginUser=用户名:{0}姓名:{1}登录次数:{2}.....
  那么在产生错误消息时就用 newActionMessage(Stringkey,Objectvalue0,Objectvalue1,Objectvalue2.....) 或者使用对象数组newActionMessage(Stringkey,Object[]values)

  1. String[]detail={ "Admin" , "王晶" , "12" };
  2. error.add("testerror" , new ActionMessage( "loginUser" ,detail))
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值