1.
根据你strtus.xml里定义的这个valu,xwork.default.invalid.fieldvalue在xxx.properties里定义
<constant name="struts.custom.i18n.resources" value="xxx">
</constant>
2.存在request里
ValueStack vs = (ValueStack)request.getAttribute("struts.valueStack");
String userNameError= vs.findValue("xxx错误名")

解决方案 »

  1.   

     xwork.default.invalid.fieldvalue 是在哪个文件定义的。。
      在xwork-.*.*.*.jar的\com\opensymphony\xwork2包的xwork-messages.properties文件中有定义,(*.*.*为版本号)
     
     fielderror和actionerror是放在哪个范围,request,session,aplication? 
     request范围。
      

  2.   

    你怎么知道是request.哪个类里面的。我看下源代码。。如果真的是request.那么为什么我第一次的错误,,第二次提交表单仍然有呢??
      

  3.   

    给我讲一下看哪个类的源代码可以看出是放在request里面的
      

  4.   

    应该是request,一个验证错误信息没必要放到session中吧,application更不可能了,
    可以设置<result />元素的type属性,分别设置成转发和重定向试试,如果是request范围,重定向后的页面是得不到错误信息。
      

  5.   

    <s:fielderror>代码里就有,你访问a出错误,再访问B你看看你还能在B里取出error吗
      

  6.   

    郁闷。。你们自己写个代码测试一下。。我在一个jsp页面里面写了个表单,,然后提交,,用struts2的框架验证之后,有错误信息放在fieldError里面,然后因为错误,我又回到那个jsp页面.<s:fielderror>显示了错误信息(比如:"用户名不能为空"),,然后我又再一次的提交表单。然后同样不填写信息,又回到页面,我又用<s:fielderror>显示信息,,结果显示的信息是:
    "用户名不能为空用户名不能为空" .有两条错误信息,,我很郁闷,,然后我填入正确的信息之后,,然后还是"用户名不能为空用户名不能为空".但是没有执行execute方法。。当然这个说明fielderror里面本来就存有信息,所有不会去执行execute方法,但是这次表单填写的信息是正确的,,也就是说明上几次的错误信息还保存在fielderror里面。。当我把我的Action 实现preparable这个接口的时候,。然后setFielderror(null)。这样以上问题就没有了。所以我认为如果是存在request里面,怎么可能会这样呢???我想看源代码。。找了半天没找着。。郁闷啊。。
      

  7.   

    execute方法没执行,你这应该是缓存问题了