如何在调用 Java 代码后激活 XPage
How to make a XPage active after invoking Java code
我有一个调用 Java 代码的按钮,其中会创建一个 Doc
文件,然后将其提供给客户。
我使用以下代码来完成 onclick 事件:
var v = new ru.generate.doc.generateDoc();
v.generateReport2();
在 generateReport2() 方法中,我有另一种方法可以向客户端提供文档。它是这样实现的:
private void giveDocumentForClient(String pathToCompleteFile) throws InvalidFormatException, IOException
{
String fn = new File(pathToCompleteFile).getName();
XspHttpServletResponse response = (XspHttpServletResponse)FacesContext.getCurrentInstance().getExternalContext().getResponse();
response.setContentType(URLConnection.guessContentTypeFromName(fn));
response.setHeader("Content-disposition", "attachment; filename=" + fn);
OutputStream output = response.getOutputStream();
output.write(IOUtils.toByteArray(new FileInputStream(new File(pathToCompleteFile))));
output.close();
FacesContext.getCurrentInstance().responseComplete();
}
效果很好,但还是有问题。执行此代码后,客户端点击“保存”按钮,此按钮所在的页面变为 'freezed',此后客户端无法单击任何内容。
按钮属性设置为默认值 - 完全更新。
如何避免这种情况?提前致谢。
将客户端 JS 调用 XSP.allowSubmit()
添加到您的按钮,以便在按下按钮后允许新的提交。
见this answer too and other similar answers。
我有一个调用 Java 代码的按钮,其中会创建一个 Doc
文件,然后将其提供给客户。
我使用以下代码来完成 onclick 事件:
var v = new ru.generate.doc.generateDoc();
v.generateReport2();
在 generateReport2() 方法中,我有另一种方法可以向客户端提供文档。它是这样实现的:
private void giveDocumentForClient(String pathToCompleteFile) throws InvalidFormatException, IOException
{
String fn = new File(pathToCompleteFile).getName();
XspHttpServletResponse response = (XspHttpServletResponse)FacesContext.getCurrentInstance().getExternalContext().getResponse();
response.setContentType(URLConnection.guessContentTypeFromName(fn));
response.setHeader("Content-disposition", "attachment; filename=" + fn);
OutputStream output = response.getOutputStream();
output.write(IOUtils.toByteArray(new FileInputStream(new File(pathToCompleteFile))));
output.close();
FacesContext.getCurrentInstance().responseComplete();
}
效果很好,但还是有问题。执行此代码后,客户端点击“保存”按钮,此按钮所在的页面变为 'freezed',此后客户端无法单击任何内容。
按钮属性设置为默认值 - 完全更新。
如何避免这种情况?提前致谢。
将客户端 JS 调用 XSP.allowSubmit()
添加到您的按钮,以便在按下按钮后允许新的提交。
见this answer too and other similar answers。