我正在使用 Primefaces TabView、CommandButton 和 FileDownload 下载日志文件。下载日志文件后,我想提供从服务器中删除日志内容的选项。
最初,删除日志文件按钮 (deleteEventLogButton) 被禁用,并有一个自定义标题说明“删除日志 - 需要导出”。导出日志后,应启用该按钮,并且标题应显示“删除日志”。
我遇到的问题是删除日志文件按钮仍然被禁用,即使在导出事件成功完成后,标题也显示为“删除日志 - 需要导出”。
我的猜测是 exportEventLogButton->Update="deleteEventLogButton" 在 fileDownload 值之前被调用。
导出日志后,我可以按“F5”并刷新页面,并启用 deleteEventLogButton 并显示正确的标题。
JSF - 片段
<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>
支持 Bean - 片段
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";
}
我尝试在 FileDownload 中移动更新事件,但没有任何区别。
<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>
我已经搜索了几天,发现了许多与这个问题非常接近的问题......但没有任何帮助。:(
只是为了让事情变得非常清楚......我在出口方面没有问题。问题是导出完成后删除日志文件按钮未启用。