我有一个表单,其中我有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());
}
答案 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 它会正常工作 快乐编码:)