问题描述
问题:前台请求到Action(path2.action),在Action中可能会添加错误,代码如下:this.addFieldError("errorMessage","错误描述“);
如果有错误会返回input,,代码如下:if(this.getFieldErrors().size()>0){returnINPUT;}
struts配置如下:<actionname="path1"class="action"method="init"><result>/jsp/1.jsp</result><resultname="input">/jsp/1.jsp</result></action><actionname="path2"class="action"method="start"><resultname="success"type="redirect">path1</result><resultname="input"type="chain">path1</result><interceptor-refname="emaTokenStack"/></action>
然后问题就出来了,返回input时,那它又会接着执行path1.action,init方法,但是如果我不执行this.clearFieldErrors();把错误清空,它就不能正确执行。如果在prepareInit()方法中执行了this.clearFieldErrors();,就会正确执行,好纠结不知道什么原因,求解!!!!!!!!
解决方案
解决方案二:
没人吗,还是现在还都在午休
解决方案三:
首先你要确定一点:INPUT的值是多少。第二点:相同的url,浏览器有时是不会去查服务器的。在请求的url加随机数。如modifyinfo.action?random=xxxxx,只要每次请求时random的值不同,客户端就认为url不同,就会去访问服务器的。第三:也可以直接在结果jsp里加的java代码清理缓存的。
解决方案四:
<resultname="input">/jsp/1.jsp</result>你返回INPUT的时候有没有跳到/jsp/1.jsp这个页面...楼主描述不是很清楚....
解决方案五:
你的执行路线是:前台请求->path2(返回INPUT)->path1(返回INPUT)->前台业面(/jsp/1.jsp),这个过程中你哪一步出了问题呢?
解决方案六:
建议楼主直接查查this.clearFieldErrors()的工作原理以及作用。
解决方案七:
引用3楼dandan8989251的回复:
<resultname="input">/jsp/1.jsp</result>你返回INPUT的时候有没有跳到/jsp/1.jsp这个页面...楼主描述不是很清楚....
chain跳转到path1.action它没执行init方法,页面上面有<s:select>控件,值没初始化,所以报错了,页面已经跳转过去了
解决方案八:
引用5楼baohuan_love的回复:
建议楼主直接查查this.clearFieldErrors()的工作原理以及作用。
这个是它把错误信息放在map中,只是把map清空而已
解决方案九:
引用4楼dandan8989251的回复:
你的执行路线是:前台请求->path2(返回INPUT)->path1(返回INPUT)->前台业面(/jsp/1.jsp),这个过程中你哪一步出了问题呢?
chain跳转到path1.action它没执行init方法,页面上面有<s:select>控件,值没初始化,所以报错了,页面已经跳转过去了