如何在ADF中提交带有文件的表单后重置表单中的inputfile

时间:2016-01-21 13:31:59

标签: jsf oracle-adf

我有一个表单,其中我有3个输入字段和一个af:inputFile,我需要上传文件和最终保存。 我不能将valueChangeEvent用于inputFile,因为如果我用户使用ResetUtils,那么我将无法获得表单输入值。 保存一切正常,但是当我再次添加记录时,最后更新的文件仍然显示在inputFile中(它没有重置)。 保存之后,如果我将输入文件绑定设置为null,则使用绑定对组件进行部分触发,加载页面需要花费大量时间进行保存,因此无法使用它。

这是我的代码

<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());

    }

2 个答案:

答案 0 :(得分: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);
}

答案 1 :(得分:0)

enter image description here只需转到上传按钮所在的弹出窗口即可。 然后在属性“Content Delivery”设置为 lazyUncache “ChildChildren”设置为立即 “自动取消”设置为停用 最后 “ResetEditableValues”设置为 WhenCancel 它会正常工作 快乐编码:)