我对 Internet Explorer 7 和 8 有一个大问题。
情况:
我有一个建立医疗处方的表格。当我点击保存按钮时,脚本将 DomainObject 保存在 DB 上,并将名为“已保存”的布尔属性(添加表单的面板)设置为 true,并将名为 PDF 的字节 [] 属性设置为带有字节流的 PDF。
在 Panel 的 RenderHead 上,我读取了这个布尔值,如果为真,我使用以下代码强制触发隐藏按钮:
String js = "$('#" + printPDF.getMarkupId() + "').click();";
response.renderOnDomReadyJavaScript(js);
该按钮执行以下代码:
ResourceStreamRequestHandler handler = new ResourceStreamRequestHandler(new ByteArrayResourceStream(pdf, "application/pdf"));
handler.setFileName("foo.pdf");
RequestCycle.get().scheduleRequestHandlerAfterCurrent(handler);
此代码在 FF 和 Chrome 上完美运行。出现浏览器下载窗口,用户可以将 PDF 保存为高清格式。
不幸的是,Internet Explorer 具有当站点需要下载某些内容时触发的该死的安全行为。该警告需要用户验证。出现一个黄色条,用户被迫点击“下载”。
截图 http://imageshack.us/a/img198/1438/securityg.jpg
当我点击下载文件时,表单再次提交,与我第一次点击保存时的状态完全相同。因此,没有先前在 DB 上的 INSERT 已经提交;会话被重置为以前的状态等......
结果是域对象的数据库上的双重插入。
有什么线索可以解决这个问题吗?