Details
-
Bug
-
Status: Closed
-
Major
-
Resolution: Won't Fix
-
2.3.16.3
Description
When using execAndWait interceptor with FileUpload interceptor, the uploaded file is removed before processing.
Steps to reproduce :
On a sample project, add a simple action which expects a file and a struts.xml of the form :
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN" "http://struts.apache.org/dtds/struts-2.3.dtd "> <struts> <constant name="struts.enable.DynamicMethodInvocation" value="false" /> <constant name="struts.devMode" value="true" /> <constant name="struts.action.extension" value="," /> <package name="accueil" namespace="/" extends="struts-default"> <action name=""> <result name="success">WEB-INF/jsp/accueil.jsp</result> </action> <action name="accueil"> <result name="success">WEB-INF/jsp/accueil.jsp</result> </action> <action name="simple" class="net.micedre.action.SimpleAction"> <interceptor-ref name="executeAndWaitStack" /> <result name="error">WEB-INF/jsp/accueil.jsp</result> <result name="success">WEB-INF/jsp/accueil.jsp</result> <result name="wait">WEB-INF/jsp/wait.jsp</result> </action> </package> </struts>
In the case of the attached example, the uploaded file is deleted before any treatment by SimpleAction on it.
This is caused by the StrutsFilter which cleans up the request leading to a deletion (in the case of jakarta file-upload) before the BackgroundProcessThread created by the execAndWait interceptor runs (or during).