在Struts中我们用html:errors标签在JSP页面上输出验证过程中产生的错误信息,错误信息一般来自于消息资源文件 (xxx.properties文件,一般位于classes目录下,文本文件),当然错误信息也可以是不是资源文件中的文本消息,而是自定义的文本。接 下来将详细讲述。
先来看一个简单例子
1、资源文件错误信息来源(其格式为key=value)
error.test=thisisatesterror.
2、 JSP页面中用于显示错误信息标签
3、ActionFormBean的validate()方 法中产生错误信息
这个例子的功能就是在ActionFormBean的validate()方法中产生一条名为:testerror 的错误信息,错误信息息是资源文件中key为error.test的值。然后在页面上用html:errors标签输出testerror这条错误信息。
这是最常用的一种功能,所有的错误信息都在资源文件里面。
有人会问,错误信息只能存放在资源文件中吗,其实不是这样。不需要资源文件也可以 产生错误信息。
我们再来看一下ActionMessage的另一种构造方法:
如果isresource值为true,则表示key是资源文件中的key,产生的消息就是与key相对应的消息
如果isresource值为false,则表示key为一条普通的消息。
如果上面的error.add改为 error.add("testerror",newActonMessage("这是一条自定义消息",false",));那么页面上显示的将是: 这是一条自定义消息.
另外还可以用ActionMessage产生复合消息,比如我们要输出:xxx不能用作用户名,其中xxx是一个变量。
首先我们在资源文件中加一个条复合消息
testmsg={0}不能用作用户名。这里{0}是要被替换的参数。
我们再来看一 下ActionMessage的另一中构造方法
也就是说用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)