我们需要Jasper库6.3中的Jive组件功能(主要是点击列标题时的列排序)。
为此,我们已从http://community.jaspersoft.com/wiki/table-sortinginteractivity-example-jasperreports-library-demos下载了示例,并尝试以类似方式构建报告。
我们编写了一个自定义数据源,并将其设置为JRXML文件中报表/表/数据集的数据源表达式。我们创建此数据源的对象,并将其作为上下文映射中的参数传递。
我们编写了一个自定义servlet,它扩展了Jasper AbstractServlet - 它的代码类似于样本中的ViewerServlet,除了它创建了一个数据源的Object并将其放在context-map中。然后它使用body模板和context-map调用VelocityUtil.processTemplate()。此Servlet也在web.xml文件中设置为自定义查看器:
<servlet>
<servlet-name>CustomViewerServlet</servlet-name>
<servlet-class>MyCustomReportServlet</servlet-class>
<init-param>
<param-name>net.sf.jasperreports.web.servlets.viewer.header.template</param-name>
<param-value>viewer/CustomHeaderTemplate.vm</param-value>
</init-param>
<init-param>
<param-name>net.sf.jasperreports.web.servlets.viewer.body.template</param-name>
<param-value>viewer/CustomBodyTemplate.vm</param-value>
</init-param>
<init-param>
<param-name>net.sf.jasperreports.web.servlets.viewer.footer.template</param-name>
<param-value>viewer/CustomFooterTemplate.vm</param-value>
</init-param>
但是,当我们通过提供URL并传递所需的参数从浏览器调用此Servlet时,它只会呈现一个空白的蓝色屏幕,其中包含Next / Previous的禁用箭头按钮。报告中没有数据,似乎我们的数据源的next()和getFieldValue()方法也没有被调用。
请帮忙解决此问题。任何指向使用自定义数据源启用Jive组件所需遵循的步骤的链接都将受到赞赏。