论坛首页 Java企业应用论坛

struts2文件上传,配置了类型拦截。出错后页面的数据丢失

浏览 6633 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2013-03-06  
   在一个文件上传的Action中我配置了类型和文件大小的拦截,配置如下:
   
<interceptor-ref name="fileUpload">   
		    	<param name ="allowedTypes">   
		         image/png,image/jpeg,image/jpg   
	    		</param>   
		    	<param name="maximumSize">     
		         2097152  <!-- 2M -->
	    		</param>     
		    </interceptor-ref>   
		    <interceptor-ref name = "defaultStack"/>  
		    <result name="input">/fileAdd.jsp</result>

其中返回结果中我配置了,出错的情况下留在当前文件上传操作页面即fileAdd.jsp.

在发生类型不匹配的情况下,fileAdd.jsp页面会输出文件类型不匹配的提示。但是原先fileAdd.jsp页面初始化时展示的一些数据就丢失了。如图片、下拉选择这些元素。

如何才能解决这个问题呢?????
   发表时间:2013-03-08  
如果fileAdd.jsp这个页面是通过action来展示出来的话,你应该在input中转到返回结果为fileAdd.jsp的那个action。
<result name="input" type="redirect-action">
<param name="actionName">xxxAction</param>
</result> 
0 请登录后投票
   发表时间:2013-03-08  
rcx123rcx 写道
如果fileAdd.jsp这个页面是通过action来展示出来的话,你应该在input中转到返回结果为fileAdd.jsp的那个action。
<result name="input" type="redirect-action">
<param name="actionName">xxxAction</param>
</result> 



这样处理的话。那文件的错误信息就丢失了啊。。。。不能在页面上提示了。
0 请登录后投票
   发表时间:2013-03-08  
oezx 写道
rcx123rcx 写道
如果fileAdd.jsp这个页面是通过action来展示出来的话,你应该在input中转到返回结果为fileAdd.jsp的那个action。
<result name="input" type="redirect-action">
<param name="actionName">xxxAction</param>
</result> 



这样处理的话。那文件的错误信息就丢失了啊。。。。不能在页面上提示了。


你可以把错误信息当成参数传递过去
<param name="actionErrors">${actionErrors}</param>
<param name="fieldErrors">${fieldErrors}</param>
0 请登录后投票
   发表时间:2013-03-08  
rcx123rcx 写道
oezx 写道
rcx123rcx 写道
如果fileAdd.jsp这个页面是通过action来展示出来的话,你应该在input中转到返回结果为fileAdd.jsp的那个action。
<result name="input" type="redirect-action">
<param name="actionName">xxxAction</param>
</result> 



这样处理的话。那文件的错误信息就丢失了啊。。。。不能在页面上提示了。


你可以把错误信息当成参数传递过去
<param name="actionErrors">${actionErrors}</param>
<param name="fieldErrors">${fieldErrors}</param>



我试试看。照这架势应该可以。
0 请登录后投票
   发表时间:2013-03-08  
oezx 写道
rcx123rcx 写道
oezx 写道
rcx123rcx 写道
如果fileAdd.jsp这个页面是通过action来展示出来的话,你应该在input中转到返回结果为fileAdd.jsp的那个action。
<result name="input" type="redirect-action">
<param name="actionName">xxxAction</param>
</result> 



这样处理的话。那文件的错误信息就丢失了啊。。。。不能在页面上提示了。


你可以把错误信息当成参数传递过去
<param name="actionErrors">${actionErrors}</param>
<param name="fieldErrors">${fieldErrors}</param>



我试试看。照这架势应该可以。



这个<param name="fieldErrors">${fieldErrors}</param>加了调用到就出错。
0 请登录后投票
   发表时间:2013-03-08  
oezx 写道
oezx 写道
rcx123rcx 写道
oezx 写道
rcx123rcx 写道
如果fileAdd.jsp这个页面是通过action来展示出来的话,你应该在input中转到返回结果为fileAdd.jsp的那个action。
<result name="input" type="redirect-action">
<param name="actionName">xxxAction</param>
</result> 



这样处理的话。那文件的错误信息就丢失了啊。。。。不能在页面上提示了。


你可以把错误信息当成参数传递过去
<param name="actionErrors">${actionErrors}</param>
<param name="fieldErrors">${fieldErrors}</param>



我试试看。照这架势应该可以。



这个<param name="fieldErrors">${fieldErrors}</param>加了调用到就出错。


文件上传类型错误默认应该是action级别的错误,所以应该会加到actionErrors集合当中
把<param name="fieldErrors">${fieldErrors}</param>去掉应该会好使把
0 请登录后投票
   发表时间:2013-03-11  
rcx123rcx 写道
如果fileAdd.jsp这个页面是通过action来展示出来的话,你应该在input中转到返回结果为fileAdd.jsp的那个action。
<result name="input" type="redirect-action">
<param name="actionName">xxxAction</param>
</result> 



参数在action中是都拿到的,就是后台报这个错误。
DEBUG [http-8080-2] - Caught OgnlException while setting property 'type' on type 'org.apache.struts2.dispatcher.ServletActionRedirectResult'.
 Caught OgnlException while setting property 'type' on type 'org.apache.struts2.dispatcher.ServletActionRedirectResult'. - Class: ognl.ObjectPropertyAccessor
File: ObjectPropertyAccessor.java
Method: setProperty
Line: 132 - ognl/ObjectPropertyAccessor.java:132:-1
0 请登录后投票
   发表时间:2013-03-12  
oezx 写道
rcx123rcx 写道
如果fileAdd.jsp这个页面是通过action来展示出来的话,你应该在input中转到返回结果为fileAdd.jsp的那个action。
<result name="input" type="redirect-action">
<param name="actionName">xxxAction</param>
</result> 



参数在action中是都拿到的,就是后台报这个错误。
DEBUG [http-8080-2] - Caught OgnlException while setting property 'type' on type 'org.apache.struts2.dispatcher.ServletActionRedirectResult'.
 Caught OgnlException while setting property 'type' on type 'org.apache.struts2.dispatcher.ServletActionRedirectResult'. - Class: ognl.ObjectPropertyAccessor
File: ObjectPropertyAccessor.java
Method: setProperty
Line: 132 - ognl/ObjectPropertyAccessor.java:132:-1



由于setFieldErrors是包级别访问的 所以会报上面的异常
0 请登录后投票
   发表时间:2013-03-12  
rcx123rcx 写道
oezx 写道
rcx123rcx 写道
如果fileAdd.jsp这个页面是通过action来展示出来的话,你应该在input中转到返回结果为fileAdd.jsp的那个action。
<result name="input" type="redirect-action">
<param name="actionName">xxxAction</param>
</result> 



参数在action中是都拿到的,就是后台报这个错误。
DEBUG [http-8080-2] - Caught OgnlException while setting property 'type' on type 'org.apache.struts2.dispatcher.ServletActionRedirectResult'.
 Caught OgnlException while setting property 'type' on type 'org.apache.struts2.dispatcher.ServletActionRedirectResult'. - Class: ognl.ObjectPropertyAccessor
File: ObjectPropertyAccessor.java
Method: setProperty
Line: 132 - ognl/ObjectPropertyAccessor.java:132:-1



由于setFieldErrors是包级别访问的 所以会报上面的异常



你是说,如果拦截器中不出fieldErrors,就不会出这个异常了是么?
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics