2012-04-08 7 views
1

ファイル名でデータテーブルを作成しています。これは、ice:outputResourceを使用してダウンロードボタンを追加しようとしていますが、ファイル名をoutputResourceBeanに送信できません。ICE Faces - アイスからbeanにファイル名paramを送信する:outputResource

私のDataTable次のようになります。

<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

ファイルを含むリストを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

おかげで、非常に参考に! –

関連する問題