【发布时间】:2011-03-04 16:43:26
【问题描述】:
我的问题适用于 Prime Faces 进度条,但任何香草 jsf 实现(使用 jquery)都会有所帮助。我的问题是当我开始长的 mysql 查询时,我也会渲染进度条。问题是它在数据查询完成后开始它的进度。我猜是因为在后端完成之前不会应用渲染阶段。我需要在另一个线程中启动进度条吗?
进度条不一定要显示查询的位置(如果可能的话)。我真的只是想展示应用程序的“思考”。也许有一些文字或动画 gif。感谢您的帮助。
编辑
这就是我所拥有的。
<p:ajaxStatus>
<f:facet name="start">
<h:graphicImage value="/resources/images/ajax-loader-bar.gif" />
</f:facet>
<f:facet name="complete">
<h:graphicImage value="/resources/images/ajax-loader-bar-still.gif" />
</f:facet>
<f:facet name="default">
<h:graphicImage value="/resources/images/ajax-loader-bar-still.gif" />
</f:facet>
</p:ajaxStatus>
请求不是ajax。
<p:commandButton value="Yes" update="growl" onclick="confirmation.hide()"
action="#{viewLines.downloadFile}" ajax="false" />
背后的方法是。
public void downloadFile() {
if (selectedPkgLine != null) {
ExcelSheet excelSheet = new ExcelSheet();
FacesContext facesContext = FacesContext.getCurrentInstance();
ExternalContext externalContext = facesContext.getExternalContext();
String pkgLineName = StringUtils.removeSpaces(StringUtils.stripGarbage(selectedPkgLine.getShortname()));
StringBuilder builder = new StringBuilder();
builder.append(pkgLineName);
builder.append(".xls");
externalContext.setResponseContentType("application/vnd.ms-excel");
externalContext.setResponseHeader("Content-Disposition", "attachment; filename=" + builder.toString());
try {
excelSheet.writeExcelSheet(this, externalContext.getResponseOutputStream());
} catch (WriteException ex) {
FacesUtils.addFatalMessage(ex.getMessage());
} catch (IOException ex) {
FacesUtils.addErrorMessage(ex.getMessage());
} catch (ServletException ex) {
FacesUtils.addErrorMessage(ex.getMessage());
}
facesContext.responseComplete();
} else {
submitDisabled = true;
FacesUtils.addErrorMessage("No packaging line was selected");
}
}
【问题讨论】:
标签: jsf primefaces