我正在使用带有jasper报告的groovy-grails开发应用程序。我需要根据它的参数查找'report bean'(比如从数据库中检索的reportname / id,我将从客户点击中获取) - 它将作为report.xml的属性从resources.xml存储到reportcontroller或reportservice中。此外,我必须'获取'与此id和参数Map相关的jrxml模板,这两个模板都定义为bean中的属性。我需要知道如何实现这一点,我们是否需要在管理这些报告bean的xml中定义任何“管理bean”。 例如,报告bean将如下所示:
<bean id="DeptReport" class="com.myapp.reporting.domain.Report">
<property name="reportName" value="Dept Report"/>
<property name="reportFiles">
<map>
<entry key="JasperPrint" value="DeptRoles.jrxml"/>
</map>
</property>
<property name="promptforparameter" value="true"/>
<property name="parameter" value="department_id"/>
<property name="displayName" value="report.deptReport.name"/>
</bean>
会有很多像这样的豆子。
所有报告的.jrxml文件都存储在一个目录中,我想将该位置连接到报告上下文中,这样每当在前端单击报告时,我想从上下文中查找这些值到报告服务/控制器以生成报告。我知道我们必须在某处做ctx.getbean(reportId),但我也想知道如何使用模板位置,数据源,参数映射,reportid和jasperreportrenderrer对象等其他属性设置管理器bean。因此,每次调用另一个报表时,都会重新加载此ReportManager bean,并在理想情况下在用户会话中保留。
答案 0 :(得分:0)
你应该可以这样做:
import org.springframework.context.*
class MyService implements ApplicationContextAware {
ApplicationContext applicationContext
def getBeanByName( String name ) {
applicationContext.getBean( name )
}
}
这是grails Service
类,但对于控制器也应如此