当尝试使用Struts2使用上载多个文件时ArrayList,如何识别每个字段?
ArrayList
例如,如果我有两个文件字段,File1并且File2在客户端,我选择仅上载File2,则Struts 2仅在列表中创建一个元素,而我无法正确地将其映射File1为空并File2与上载的文件对应。
File1
File2
我在这里可以使用任何标识符吗?
使用自定义对象的列表(或映射),其中包含您的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)。