文件输入消失在Struts无效的表单重新加载

时间:2012-06-11 20:47:01

标签: validation jsp file-upload struts

我的Struts ActionForm

中有以下内容
private List<FormFile> attachmentList = new ArrayList<FormFile>();

public MyForm() {
    for (int i = 0 ; i < 5 ; i++) {
        getAttachmentList().add(null);
    }
}

public List<FormFile> getAttachmentList() {
    return attachmentList;
}

public void setAttachmentList(List<FormFile> attachmentList) {
    this.attachmentList = attachmentList;
}

public FormFile getAttachmentList(int index) {
    return getAttachmentList().get(index);
}

public void setAttachmentList(int index, FormFile formFile) {
    getAttachmentList().set(index, formFile);
}

在我的JSP中,我有以下内容

<c:forEach var="counter" begin="0" end="4">
    <input type="file" name="attachmentList[${counter}]" size="50" />
</c:forEach>

除非validate的{​​{1}}方法发现错误(通常与表单上的其他字段相关),否则一切正常。表单重新加载时,不再填充文件输入。我在显示ActionForm返回重新加载的页面之前添加了一个断言,Action具有正确数量的附件(它们的文件名不是空白等)。

有谁知道如何使文件绑定并保留?

1 个答案:

答案 0 :(得分:2)

无法预先填写文件字段;这是一个众所周知的浏览器,与Struts无关。