2016-01-21 36 views
0

我有一個表單,其中有3個輸入字段和一個af:inputFile,我需要上傳文件並最終保存。 我不能使用valueChangeEvent作爲inputFile,因爲如果我用戶ResetUtils然後我不會得到表單輸入值。 保存一切工作正常,但當我再次添加一條記錄,然後最後更新的文件仍然顯示在inputFile(它不重置)。 保存後,如果我設置輸入文件綁定爲null,然後做部分觸發組件使用綁定其加載頁面花費巨大的時間來保存,所以我不能使用它。如何在用ADF中的文件提交表單後重置表單中的輸入文件

這裏是我的代碼

<af:panelFormLayout id="pfl1" rows="3"> 
<af:inputText value="#{bindings.Title.inputValue}" label="#{bindings.Title.hints.label}" 
           required="#{bindings.Title.hints.mandatory}" 
           columns="#{bindings.Title.hints.displayWidth}" 
           maximumLength="#{bindings.Title.hints.precision}" 
           shortDesc="#{bindings.Title.hints.tooltip}" id="it1" contentStyle="width:150px"> 
        <f:validator binding="#{bindings.Title.validator}"/> 
        </af:inputText> 
    <af:panelGroupLayout id="pgl350" layout="horizontal"> 
<af:inputFile label="Select" id="if51" value="#{ContractDocumentUploadDwn.file}" 
showRequired="true" binding="#{ContractDocumentUploadDwn.inputFileBinding}"/> 
<af:button text="Upload" id="b353" action="#{ContractDocumentUploadDwn.uploadPortfolioDoc}"/> 
</af:panelGroupLayout> 
</af:panelFormLayout> 

Java代碼:

public void savePortfolioDoc(ActionEvent actionEvent) { 
     // Add event code here... 

     DCIteratorBinding iter = getDCIteratorBinding("portfolioDocument1Iterator"); 
     UploadedFile myfile = (UploadedFile) this.getInputFileBinding().getValue(); 
     String binding = "Commit1"; 
     String popUpId = "p2"; 
     genericSaveDocuments(actionEvent, iter, myfile, binding, popUpId, "Portfolio");//Saves the document 
     iter.executeQuery(); 
     iter.refresh(1); 
     setInputFileBinding(null); 
     ResetUtils.reset(actionEvent.getComponent()); 

    } 
+0

不知道,如果這是你問題的解決方案,但是......在' bobbel

+0

我編輯了我的問題,請檢查。沒有語法錯誤。同時錯誤地複製和粘貼代碼來輸入字符。 –

+0

它的一切看起來像一團糟,你的描述和代碼不匹配。它看起來像你有單獨的按鈕來上傳文件,爲什麼?如果您提交表單,則可以使用「提交」按鈕。一般來說,您不需要執行查詢或刷新表單。然而,你確實需要調用PPR動作來形成像'panelFormLayout'這樣的包裝,以使bean中的更改可見。 – Nagh

回答

0

這不是你https://community.oracle.com/thread/3889350

問您是否嘗試過的解決方案給有同樣的問題?

public void savePortfolioDoc(ActionEvent actionEvent) { 
    // Add event code here... 

    DCIteratorBinding iter = getDCIteratorBinding("portfolioDocument1Iterator"); 
    UploadedFile myfile = (UploadedFile) this.getInputFileBinding().getValue(); 
    String binding = "Commit1"; 
    String popUpId = "p2"; 
    genericSaveDocuments(actionEvent, iter, myfile, binding, popUpId, "Portfolio");//Saves the document 
    this.getInputFileBinding().resetValue(); 
    this.setFile(null); 
    // Reset inputFile component after upload 
    ResetUtils.reset(this.getInputFileBinding()); 
    //iter.executeQuery(); 
    //iter.refresh(1); 
} 
+0

雅我試過了。但沒有運氣:( –

+0

好的,你使用了inputFile中的value屬性,你也必須重置它,我改變了上面的代碼。 –

0

enter image description here只需轉到上傳按鈕所在的彈出窗口。 然後在屬性「內容交付」設置爲lazyUncache 「ChildChildren」設置爲立即 「自動取消」設置爲禁用 和最後 「ResetEditableValues」設置爲當取消 它會正常工作 快樂編碼:)

相關問題