※如何解决Struts中的ActionErrors怎么才能在页面上显示出来的问题?※

在Action中生成ActionErrors不能使用,可以转到我指定的错误页面,但不显示错误信息,在网上找了半天,都试了,没有搞定,后来还是自己搞定了,网上有人说语句(1)中的key要与form的属性对应,我就把它改成对应了,这个“department”在我的form中有,但还是不行,(不知道不对应可不可以,我没去试了,大家可以自己试试,不过改成对应也无妨)

===========================================================================
ActionErrors errors=new ActionErrors();
errors.add("department",new ActionError("del.department.error"));(1)
saveErrors(request,errors);
return mapping.findForward("false");

==========================================================================
也有人说把key改成ActionErrors.GLOBAL_ERROR,也就是errors.add("ActionErrors.GLOBAL_ERROR",new ActionError("del.department.error"));但对我的问题还是一样没有解决,我觉得改成后一种那jsp页面就要改成这样<html:errors/>,如果是上面的话就应该这样写<html:errors property="department"/>。所有这些我都试了,这个del.department.error在我的资源文件中是有的.
后来看到网上有人解决了。“我解决了。我的问题出在在form方法的validate添加错误时使用的是new   ActionMessage.”他的问题好像在form中返回错误信息,而我的是在action中,而且我的form中根本就没有验证,所以跟我的不一样,大家有一样的可以看看,
 

==============================================================================
最后,我还是参考以前做的一个可以显示的,配置都差不多,几乎一样,就一个地方不一样,我改了就OK了,哈哈,
===============================================================================

                                                正确的struts_config配置

============================================================================
    <action
      attribute="alterdepartmentForm"
      input="/personnel/alterdepart.jsp"
      name="alterdepartmentForm"
      path="/alter"
      scope="request"
      type="com.xeeder.struts.action.AlterdepartmentAction">
      <forward name="success" path="/index.html" />
      <forward name="false" path="/personnel/errors.jsp" />(2)
    </action>

===================================================================================

                                                                     错误的配置

===================================================================================

<action
      attribute="alterdepartmentForm"
      input="/personnel/alterdepart.jsp"
      name="alterdepartmentForm"
      path="/alter"
      scope="request"
      type="com.xeeder.struts.action.AlterdepartmentAction">
      <forward name="success" path="/index.html" />
      <forward name="false" path="/personnel/errors.jsp"  redirect="true"/>(2)
    </action>
问题就出在(2)我以前的是<forward name="false" path="/personnel/errors.jsp" redirect="true"/>,我的是自动生成的所以没有太注意,没想到竟然问题就出在这里,我看书上说当此项为true时,表示执行重定向操作,为flase时表示请求转发操作,重定向与转发是有区别的,重定向的源组件与目标组件之间不共用同一个httpservletrequest对象,因此不能共享request范围内的享数据。所以我的问题就是重定向到了我的错误显示页面,这样原来保存在request范围内的错误信息根本就丢了,所以不能正常显示 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值