FileUpload,Struts2,FileUploaderInterceptor中没有文件

问题描述 投票:0回答:1

有一个工作的Struts2 portlet环境,我无法在portlet模式下使Struts fileUpload工作。

我知道

  • 将文件上载到服务器,在临时空间中创建。
  • 原始请求中存在多部分请求,其中包含文件名和文件内容,并在其中输入Struts类。
  • 我可以触发最大大小响应,即Struts中设置的默认值。
  • FileUploadInterceptor被触发,但在Jakarta MultipartRequest中没有文件。在原始请求和Jakarta包装器之间的某处,文件将丢失。

我在一个精简的Spring Boot 2应用程序中尝试了相同的方法,出现了与主项目相同的问题。遵循代码

https://struts.apache.org/core-developers/file-upload.html

对于JSP和动作类。 portlet已创建,流程正常,但操作中没有文件。

标准Spring Boot 2带有额外的pom:

<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;
    }

这是portlet模式中的错误还是我错过了一个关键依赖项,一个组件,版本?替代方法?

在图像中,JSR168调度程序中有一个断点,该文件存在。第一个在服务器之后运行的代码。 breakpoint in JSR168 dispatcher

java spring-boot struts2 portlet
1个回答
© www.soinside.com 2019 - 2024. All rights reserved.