识别多文件上载中的每个字段
当尝试使用ArrayList
使用Struts2上传多个文件时,如何识别每个字段?
例如,如果我有两个文件字段, File1
和File2
,在客户端,我选择只上传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();
什么更适合您的需求