Also hier ist die Sache. Ich habe ein Popup, das eine Schaltfläche hat, die Schaltfläche selbst hat einen fileDownloadActionListener, dieser ist verantwortlich für das Herunterladen einer Excel-Datei. Was ich also im Grunde brauche ist, das Popup direkt nach dem Generieren der Datei zu verstecken.Oracle ADF: Popup nach dem Herunterladen der Datei zu schließen
Hier ist meine .jspx-Datei (nur das Popup)
<af:popup childCreation="deferred" autoCancel="enabled"
id="myPopUp"
contentDelivery="lazyUncached"
binding="#{viewScope.mbMyBean.myPopUp}"
partialTriggers="b17">
<af:dialog id="d16" type="cancel"
title="Do you wish to download a file?"
inlineStyle="width:400px;">
<af:panelGroupLayout id="pgl32"
inlineStyle="max-width: 200px;">
<af:outputText value="You're about to download a file. Ready?" id="ot45"
/>
</af:panelGroupLayout>
<f:facet name="buttonBar">
<af:button text="GO" id="b17"
<af:fileDownloadActionListener contentType="excelHTML"
filename="#{viewScope.mbMyBean.FileName}"
method="#{viewScope.mbMyBean.GenerateEmptyExcel}"
/>
</af:button>
</f:facet>
</af:dialog>
</af:popup>
Und hier ist die Java-Methode:
public void GenerateEmptyExcel(FacesContext facesContext, OutputStream outputStream) {
try {
HSSFWorkbook wb1 = generateEmptyExcelFile();
wb1.write(outputStream);
outputStream.flush();
outputStream.close();
this.myPopUp.hide();
AdfFacesContext.getCurrentInstance().addPartialTarget(this.myPopUp);
System.gc();
} catch (Exception e) {
e.printStackTrace();
}
}
PROBLEM
Das Popup-Fenster wird nicht verbergen.
NOTES
- Das Popup wird in der Bohne
- ich diesen Code besitzen nicht richtig binded und ich bin eine Wartung zu tun.
- Ich weiß nicht, warum der Programmierer System.gc() verwendet, da ich es als eine schlechte Praxis betrachte. Here's a good reason
Ist es org.apache.myfaces.trinidad.util.Service? – ggderas
ja es ist org.apache.myfaces.trinidad.util.Service – amishra
Es scheint nicht zu funktionieren. Die popup.getCientID() gibt etwas anderes zurück als das tatsächlich gerenderte HTML. Das tatsächlich gerenderte HTML hat :: content nach dem popupID. So oder so, versuche ich mit beiden und immer noch keine Antwort – ggderas