2017-01-13 75 views
3

我想上传多个文件并将它们绑定到条纹框架中的java数组。我已阅读SO上的文档herethis question。不过,我仍然有问题。当在调试中运行时,如果我上传多个文件,我注意到只有最后一个文件被绑定到数组。我做错了什么?上传带条纹的多个文件

<stripes:form> 
<c:forEach varStatus="loop" begin="0" end="3"> 
<stripes:file name="attachments[${loop.index}]"/> 
</c:forEach> 
<stripes:submit name="submit" /> 
</stripes:form> 

private List<FileBean> attachments = new ArrayList<FileBean>(); 
public void setAttachments(List<FileBean> attachments) throws IOException { 
    logger.info("*********************Attachments " + attachments.size()); 
    this.attachments = attachments; 
    //documentation says to call FileBean.save or read them as a stream 

} 

回答

1

你可以忽略二传手。变量attachments已通过new运算符初始化。

private List<FileBean> attachments = new ArrayList<FileBean>(); 

public List<FileBean> getAttachments() { 
    return this.attachments; 
} 

public Resolution submit() { 
    System.out.println("********************* Attachments " + attachments.size()); 
    return show(); 
} 

@DefaultHandler 
public Resolution show() { 
    return new ForwardResolution("[path to jsp]"); 
} 

按下“提交”的表单中所称的“提交”解决方案,您现在可以检查填充附件,保存它们, - 再次回归到形式 - 在这个例子中。或者你可以显示你的访客另一页。

+0

我试过了,但是当我上传两个文件换句话说控制单击文件对话框中的两个文件。该数组仅在调试模式下保存一个项目。我需要能够用n个附件填充附件数组 – Hardrock302

+0

您的意思是一个''?我不会说在Stripes中这是不可能的,但它可能并不容易。正如建议的那样,去年在bean的邮件列表上有一个讨论https://sourceforge.net/p/stripes/mailman/message/34787765/也许尝试一个ajax(jQuery)脚本。 – acdhirr