public ActionErrors pageValidate(ActionMapping mapping,
HttpServletRequest request, ActionErrors errors) {
if (SqatchValidator.isNull(bgId)){
errors.add( "bgId ", new ActionError( "ErrCom01 "));
}
return errors;
}
在jsp中有 <html:error/> 捕捉异常。
为什么显示不出来啊!
为什么html:error捕捉不到错误
有可能是什么原因!
------解决方法--------------------------------------------------------
改成这样试一下errors.add(ActionErrors.GLOBAL_MESSAGE, new ActionError( "ErrCom01 "));
要不然你的 <html:error> 标签中要加property
------解决方法--------------------------------------------------------
+个这句saveErrors(request, errors);试下
------解决方法--------------------------------------------------------
会不会是Struts的版本问题
struts1.2用ActionMessage,struts1.1用ActionError
你核对一下
------解决方法--------------------------------------------------------
1.jsp中使用 <html:error/> 的代码贴出来?
2.struts版本是什么? 1.2中errors.add( "bgId ", new ActionError( "ErrCom01 "));这个方法已经不推荐使用啦
------解决方法--------------------------------------------------------
<html:errors property= "bgId "/>
建议用1.2吧,1.1太老啦
在Struts中我们用html:errors标签在JSP页面上输出验证过程中产生的错误信息,错误信息一般来自于消息资源文件(xxx.properties文件,一般位于classes目录下,文本文件),当然错误信息也可以是不是资源文件中的文本消息,而是自定义的文本。接下来将详细讲述。
先来看一个简单例子
1、资源文件错误信息来源(其格式为 key = value )
error.test = this is a test error.
2、JSP页面中用于显示错误信息标签
<html:errors property= "testerror "/>
3、ActionFormBean的validate()方法中产生错误信息
ActionErrors error = new ActionErrors();
error.add( "testerror ",new ActionMessage( "error.test "))
return error;
这个例子的功能就是在ActionForm Bean的validate()方法中产生一条名为:testerror的错误信息,错误信息息是资源文件中key为error.test的值。然后在页面上用html:errors标签输出testerror这条错误信息。
这是最常用的一种功能,所有的错误信息都在资源文件里面。
有人会问,错误信息只能存放在资源文件中吗,其实不是这样。不需要资源文件也可以产生错误信息。
我们再来看一下ActionMessage的另一种构造方法:
ActionMessage(String key,boolean isresource)
如果isresource值为true,则表示key是资源文件中的key,产生的消息就是与key相对应的消息
如果isresource值为false,则表示key为一条普通的消息。
如果上面的error.add改为error.add( "testerror ",new ActonMessage( "这是一条自定义消息 ",false ",));那么页面上显示的将是:这是一条自定义消息.
另外还可以用ActionMessage产生复合消息,比如我们要输出:xxx不能用作用户名,其中xxx是一个变量。
首先我们在资源文件中加一个条复合消息
testmsg = {0}不能用作用户名。这里{0}是要被替换的参数。
我们再来看一下ActionMessage的另一中构造方法
ActionMessage(String key,Object value0);
也就是说用value0的值来替换{0}
我们修改error.add为error.add( "testerror ",new ActonMessage( "testmsg ", "毛泽东 "))
那么JSP页面上将显示:毛泽东不能用作用户名。
当然在一条复合消息中也可带多个参数,参数依次为{0},{1},{2}或更多
例如:loginUser = 用户名:{0} 姓名:{1} 登录次数:{2}.....
那么在产生错误消息时就用new ActionMessage(String key,Object value0,Object value1,Object value2.....)或者使用对象数组new ActionMessage(String key,Object[] values)