我有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 ...
提前感谢您的帮助!
答案 0 :(得分: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>