一尘不染

识别多文件上传中的每个字段

jsp

当尝试使用Struts2使用上载多个文件时ArrayList,如何识别每个字段?

例如,如果我有两个文件字段,File1并且File2在客户端,我选择仅上载File2,则Struts
2仅在列表中创建一个元素,而我无法正确地将其映射File1为空并File2与上载的文件对应。

我在这里可以使用任何标识符吗?


阅读 307

收藏
2020-06-08

共1个答案

一尘不染

使用自定义对象的列表(或映射),其中包含您的File,fileName和contentType(以及其他字段)。一个JSP 对应的元素,必须清楚。

我确实喜欢那样(因为我也有很多其他领域),而且它就像一种魅力。

(这 不是 唯一的方法,它只是当您还需要处理其他字段时将变得更加方便的一种工作方法)

POJO

public class MyCustomRow implements Serializable {

    private File   fileUpload;
    private String fileUploadFileName; 
    private String fileUploadContentType;

    private String otherField1;
    private String otherField2;

    /* All Getters and Setters here */
}

在行动

private List<MyCustomRow> rows;
/* Getter and Setter ... */

在JSP中

<s:iterator value="rows" status="row">

    <s:file      name="rows[%{#row.index}].fileUpload" />

    <s:textfield name="rows[%{#row.index}].otherField1"/>
    <s:textfield name="rows[%{#row.index}].otherField2"/>

</s:iterator>

Struts2将自动检测并填充文件名和内容类型(确保堆栈中有FileUploadInterceptor)。

2020-06-08