在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范围内的错误信息根本就丢了,所以不能正常显示