当前位置: 代码迷 >> Java Web开发 >> <html:error/>捕捉不到错误有关问题
  详细解决方案

<html:error/>捕捉不到错误有关问题

热度:105   发布时间:2016-04-17 13:16:44.0
<html:error/>捕捉不到错误问题
public   ActionErrors   pageValidate(ActionMapping   mapping,
                        HttpServletRequest   request,   ActionErrors   errors)   {
             
     
                if   (SqatchValidator.isNull(bgId)){
                        errors.add( "bgId ",   new   ActionError( "ErrCom01 "));                                    
                }
            return     errors;

  }
在jsp中有 <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)
  相关解决方案