1

我想在我的 rptdesign 文件(位于报告项目下)中的 javascript 中调用 Java 对象,在我将我的类的 jar 放在 /Web-Inf/lib 目录和 Web-Inf/classes 中的 .class 我试过之后在数据集的打开事件中是这样的:

gsh = new Packages.de.vogella.birt.stocks.daomock.StockDaoMock(); 

stock = gsh.getStockValues(); 

de.vogella.birt.stocks.daomock是位于 Java 项目 (ClassPackage) 下的包的名称/src

StockDaoMock是类的名称。

getStockValues()是方法。

但我得到这个错误:

cannot evaluate the script. data set script method fetch returned null.expected a boolean value.

怎么了?


我尝试将 fetch 方法中的所有代码替换为“system.out.println("essai"); return true;” 并且仍然有这个错误“数据集脚本方法“Fetch”返回 null;期望一个布尔值。”

4

2 回答 2

2

启用日志记录以查看堆栈跟踪。见维基

确保记录异常(该示例仅记录消息):-)

快速而肮脏的日志记录”也可能有所帮助。

您可能还有类加载器问题。有关类加载器选项以及如何在使用 BIRT 时通过 OSGi 调试包发现,请参阅此博客文章。

[编辑]错误消息意味着您忘记return true;return false;fetch方法结束时。

于 2012-08-13T11:55:39.713 回答
-3

java运行在服务器上,而javascripts运行在浏览器中,所以很明显不能直接从javascript调用Java。

有一个库叫做DWR (Direct Web Remoting). 它可以将 Java 方法暴露给 Javascript 方法。当您调用 Javascript 时,它会发出 AJAX 请求,然后DWRServlet处理它,执行您想要的 Java 方法,并将方法结果返回给浏览器。

于 2012-08-14T08:47:21.743 回答