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

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

例如,如果我有两个文件字段, File1File2 ,在客户端,我选择只上传File2 ,Struts 2只在列表中创建一个元素,我无法正确地将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 rows; /* Getter and Setter ... */ 

在JSP中

      

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

使用不同的名称命名每个字段,并为操作属性创建相应的访问者。 然后每个人都将通过OGNL处理名称并设置相应的属性。 尝试使用不同的方法为迭代器标记索引的文件创建列表或映射。

     

在行动

 private List fileUpload = new ArrayList(); 

每个属性也应该有访问者

然后你会通过检查列表索引中的文件来知道它们中的哪一个上传了。 您也可以尝试使用Map

     

在行动

 private Map fileUpload = new HashMap(); 

什么更适合您的需求