1

我有一个带有文件名的 acefaces 数据表,一个在行上,我正在尝试使用 ice:outputResource 添加一个下载按钮,但是我无法将文件名发送到 outputResourceBean。

我的数据表如下所示:

<h:form id="exportedFiles">
       <ace:dataTable value="#{exportBean.allFiles}" var="upload" 

                    <ace:column>
                        <f:facet name="header" >
                            <h:outputText value="Název souboru"/>
                        </f:facet>    
                        <h:outputText value="#{upload.name}"/>
                    </ace:column>

                    <ace:column>
                        <f:facet name="header" >
                            <h:outputText value="Dowload file"/>
                        </f:facet>      
                        <ice:outputResource id="downLink" 
                                            resource="#{outputResource.pdfResource}"
                                            attachment="true"
                                            label="Download PDF"
                                            type="button">
                        </ice:outputResource>
                    </ace:column>
                </ace:dataTable>
            </h:form>

我的豆子看起来像这样:

public static final String PDF_NAME = "Download_PDF.pdf";
public static final Resource PDF_RESOURCE = new MyResource(PDF_NAME);
public String getPdfName() { return PDF_NAME; }
public Resource getPdfResource() { return PDF_RESOURCE; }

我可以使用 #{upload.name} 获取文件名,但我不知道如何在单击“下载”按钮时将其发送到 bean...

提前感谢您的帮助!

4

1 回答 1

0

您可以将包含文件的列表包装到ListDataModel. 这允许您访问当前选定行索引的数据。

@ManagedBean
@ViewScoped
public class ExportBean {

    private ListDataModel<MyResource> allFiles;

    public ListDataModel<MyResource> getAllFiles() {
        if (allFiles == null) {
            List<MyResource> files = new ArrayList<MyResource>();
            files.add(new MyResource("doc1.pdf"));
            files.add(new MyResource("doc2.pdf"));
            files.add(new MyResource("doc3.pdf"));
            files.add(new MyResource("doc4.pdf"));
            files.add(new MyResource("doc5.pdf"));
            allFiles = new ListDataModel<MyResource>(files);
        }
        return allFiles;
    }

    public String getPdfName() {
        // add the getResourceName method to MyResource
        return allFiles.getRowData().getResourceName();
    }

    public Resource getPdfResource() {
        return allFiles.getRowData();
    }
}

xhtml 页面看起来像这样:

<h:form id="exportedFiles">
    <ace:dataTable value="#{exportBean.allFiles}">
        <ace:column>
            <h:outputText value="#{exportBean.pdfName}" />
        </ace:column>
        <ace:column>
            <ice:outputResource resource="#{exportBean.pdfResource}" attachment="true" label="Download PDF" type="button" />
        </ace:column>
    </ace:dataTable>
</h:form>
于 2012-04-10T22:04:12.563 回答