Sto usando Primefaces TabView, CommandButton e FileDownload per scaricare un file di registro. Una volta scaricato il file di registro, desidero offrire l'opzione per eliminare il contenuto del registro dal server.Aggiornamento componente dopo il download del file
Inizialmente il pulsante Elimina file di registro (deleteEventLogButton) è disabilitato e presenta una didascalia personalizzata che indica "Elimina registri - Esportazione richiesta". Una volta esportato il registro, il pulsante dovrebbe essere abilitato e la didascalia dovrebbe indicare "Elimina registri".
Il problema che si verifica è che il pulsante Elimina file di registro è ancora disabilitato e la didascalia riporta "Elimina registri - Esportazione richiesta" anche dopo che l'evento di esportazione è stato completato correttamente.
La mia ipotesi è che exportEventLogButton-> Update = "deleteEventLogButton" venga chiamato prima del valore fileDownload.
Una volta esportati i registri, posso premere "F5" e aggiornare la pagina e deleteEventLogButton è abilitato mostrando la didascalia corretta.
JSF - Snippet
<p:tabView id="logView">
<p:tab id="eventLogTab" title="Security Events">
<p:panelGrid ...>
<p:commandButton id="exportEventLogButton" icon="ui-icon-disk" styleClass="c25" ajax="false" title="Export Log" disabled="#{empty managedCmsLogsBean.eventLogEntityList}" update="deleteEventLogButton">
<p:fileDownload value="#{managedCmsLogsBean.exportEventLogFiles()}"/>
</p:commandButton>
<p:commandButton id="deleteEventLogButton" icon="ui-icon-trash" styleClass="c25" ajax="false" title="#{managedCmsLogsBean.deleteEventLogCaption}" disabled="#{! managedCmsLogsBean.eventLogExported}" action="#{managedCmsLogsBean.clearEventLogs()}" update="eventLogTab" />
</p:panelGrid>
<p:dataTable value="#{managedCmsLogsBean.eventLogEntityList}" ...>
...
</p:dataTable>
</p:tab>
</p:tabView>
Backing Bean - Snippet
private boolean eventLogExported;
public StreamedContent exportEventLogFiles() {
eventLogExported = true;
return logFileUtility.exportSecurityEventLog(eventLogEntityList, eventLogStartDate, eventLogStopDate);
}
public boolean isEventLogExported() {
return eventLogExported;
}
public void setEventLogExported(boolean value) {
eventLogExported = value;
}
public String getDeleteEventLogCaption() {
return eventLogExported ? "Delete Logs" : "Delete Logs - Export Required";
}
ho provato spostando l'evento di aggiornamento all'interno del FileDownload, ma non ha fatto la differenza.
<p:commandButton id="exportEventLogButton" icon="ui-icon-disk" styleClass="c25" ajax="false" title="Export Log" disabled="#{empty managedCmsLogsBean.eventLogEntityList}">
<p:fileDownload value="#{managedCmsLogsBean.exportEventLogFiles()}">
<p:ajax update="deleteEventLogButton"/>
</p:fileDownload>
</p:commandButton>
Ho cercato per un paio di giorni e ho trovato molti problemi che vengono molto vicino a questo ... ma nessuno che abbia aiutato. :(
Giusto per rendere le cose molto chiare ... non sto avendo problemi con l'esportazione. Il problema è che il pulsante Elimina file di registro non è abilitato, dopo l'esportazione è completa.
Brillante! Questo ha funzionato magnificamente. Adoro questo sito ... ed è per gente come te! – AceFunk
Come sei nuovo, se questo ti ha aiutato dovresti accettare una risposta – partlov
Ha funzionato! Grazie. –