Работающая среда портлетов Struts2, в которой я не могу заставить Struts fileUpload работать в режиме портлета.
Я вижу, что
- Файл загружается на сервер, созданный ввременное пространство.
- В исходном запросе присутствует многокомпонентный запрос с именем файла и содержимым файла, в который он входит в классы Struts.
- Я могу вызвать ответ максимального размера, значение по умолчанию, установленное в Struts.
- FileUploadInterceptor запущен, но в Jakarta MultipartRequest нет файла.Где-то между исходным запросом и оболочкой из Джакарты файл утерян.
Я пробовал такой же подход в урезанном приложении Spring boot 2, такая же проблема возникает, как и в основном проекте.За кодом следовали
https://struts.apache.org/core-developers/file-upload.html
для JSP и классов действий.Портлет создан, поток работает, но в действии нет файла.
Стандартный Sping Boot 2 с дополнительными в пом:
<dependency>
<groupId>org.apache.struts</groupId>
<artifactId>struts2-spring-plugin</artifactId>
<version>2.5.20</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>4.0.1</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>1.3.2</version>
</dependency>
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.4</version>
</dependency>
Struts.xml
<package name="uploadtest" extends="struts-portlet-default" namespace="/uploadtest">
<action name="uploadtestPrepare" class="bouvet.no.fileuploadtest.action.FileUploadSubmitAction">
<result name="success">/WEB-INF/struts2/test/fileUpload.jsp</result>
</action>
<action name="uploadTestSubmit" class="bouvet.no.fileuploadtest.action.FileUploadSubmitAction">
<result name="success">/WEB-INF/struts2/test/fileUpload.jsp</result>
</action>
</package>
и формой
<s:form action="uploadTestSubmit" method="post" enctype="multipart/form-data">
FileName: <s:property value="%{filename}"/>
<s:file name="upload" label="File" />
<s:submit/>
</s:form>
сеттер
public void setUploadFileName(String filename) {
this.filename = filename;
}
Это ошибка в режиме портлета или мне не хватает ключевой зависимости, компонента, версии?Альтернативный метод?
В образе, точке останова в диспетчере JSR168, файл присутствует.Первый код для запуска после сервера. точка останова в диспетчере JSR168