使用JasperReports Web Services设置输入控件的值


Set value of an input control using JasperReports Web Services

我正在使用JasperReports Server Web Services使用php curl检索PDF格式的报告。

不幸的是,我想生成的报告使用的值是Input Control

如果我不提供这个输入控件的值,我的报告工作,但每个值都是0。

根据官方指南:JasperReports服务器Web服务指南第24页,它说我应该在URL中使用IC_GET_QUERY_DATA参数,所以我做到了并提供了数据源的URI,然后我使用P_param_name来提供参数的值,但我无法让它工作,似乎报告没有使用这些值。

您可以考虑使用新的运行报告机制("RESTv2服务"的一部分)。您可以在URL中作为查询项为报表提供输入控件。多选择输入可以定义多次,只要你需要选择。

例如,如果您将GET请求发送到http://[yourserver]:[port]/jasperserver/rest_v2/reports/uri/到/my_report.pdf?state=CA&state=OK&city=Sacramento

您将得到一个报告,其中State控件被设置为"OK"answers"CA",City控件被设置为"Sacramento"

使用REST php包装器可以使这些请求更简单。

上面的例子可以这样实现:

$client = new JasperClient('yourserver', 'port', 'username', 'password', '/jasperserver');
$report_data = $client->runReport('/uri/to/my_report', 'pdf', null, null, array('state' => array('OK', 'CA'), 'city' => 'Sacramento'));

报告的二进制数据将存储在$report_data中,您可以随意使用它。(即:写入文件,流到浏览器下载…等等)。