2012-04-08 21 views
1

我有acefaces數據與文件名,一個行,我想添加一個下載按鈕使用ice:outputResource,但我發送文件名失敗outputResourceBean 。ICE的面孔 - 從冰發送文件名參數到bean:outputResource

我的數據表的樣子:

<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得到的文件名,但我不知道如何發送它點擊下載按鈕時豆...

感謝您的幫助提前!

回答

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> 
+0

謝謝,非常有幫助! – 2012-04-13 08:37:26