【发布时间】:2009-07-09 16:47:05
【问题描述】:
这是 JavaScript(在 aspx 页面上):
function WriteDocument(clientRef, system, branch, category, pdfXML)
{
AppletReturnValue = document.DocApplet.WriteDocument(clientRef, apmBROOMS, branch, category, pdfXML);
if (AppletReturnValue.length > 0) {
document.getElementById('pdfData').value = "";
CallServer(AppletReturnValue,'');
}
PostBackAndDisplayPDF()
}
pdfXML 是从 pdfData 获得的,它是页面上的一个隐藏字段,其中包含 XML,其中包含传递给 java 小程序的 base64 编码的 pdf 数据。传递的所有其他值都在合理范围内。
XML 是这样的
<Documents>
<FileName>AFileName</FileName>
<PDF>JVBERiDAzOTY1NzMwIDAwMDAwIG4NCjAwMDM5NjU4NDcgMDAwMDAgbg0KMDAwMzk2NTk2</PDF>
</Documents>
元素PDF的内容比这里显示的要大很多
Java方法的签名是:
public String WriteDocument(String clientPolicyReference,
int systemType,
int branch,
String category,
String PDFData) throws Exception
似乎当PDF数据变大时,小程序调用失败,JS中抛出错误'Unknown Error'。
产生此错误的数据的 PDF 文档大小约为 4Mb。
非常感谢您的任何帮助。
【问题讨论】:
-
WriteDocument方法是否成功退出?如果无法判断,可能值得在里面添加一个 try/catch。
-
自从 QA 看到这个错误后,我在 WriteDocument 函数的开头就进行了一些登录(它是一个签名的受信任的应用程序,所以我可以写入用户主目录中的日志文件)并且不会发生。我开始怀疑失败是在方法调用时发生的。我只是不知道为什么?我已经对这个问题进行了进一步的澄清。
-
您的小程序标签是否包含 mayscript="mayscript" ?
-
您也可以尝试从小程序中获取表单字段值而不将其作为参数传递?
-
不,它没有。我不知道该属性及其用法。我不知道 Java 小程序可以直接访问表单元素。这可能是值得尝试的事情。我还是有点担心我不知道为什么会这样。
标签: java javascript applet