我有以下Spring xml文件,用于为不同的文件格式生成不同的视图。我有两个属性,一个是 url 和 datasource 。我希望在运行时更改 url ,即我想使用不同的jrxml
文件而不是一个静态文件。
<bean id="pdfReport"
class="org.springframework.web.servlet.view.jasperreports.JasperReportsPdfView"
p:url="classpath:tree-template.jrxml" p:reportDataKey="datasource" />
<bean id="xlsReport"
class="org.springframework.web.servlet.view.jasperreports.JasperReportsXlsView"
p:url="classpath:tree-template.jrxml" p:reportDataKey="datasource" />
<bean id="htmlReport"
class="org.springframework.web.servlet.view.jasperreports.JasperReportsHtmlView"
p:url="classpath:tree-template.jrxml" p:reportDataKey="datasource" />
<bean id="csvReport"
class="org.springframework.web.servlet.view.jasperreports.JasperReportsCsvView"
p:url="classpath:tree-template.jrxml" p:reportDataKey="datasource" />
答案 0 :(得分:3)
从您的上下文中检索bean
ApplicationContext context = ...;
JasperReportsCsvView view = (JasperReportsCsvView) context.getBean("csvReport");
并使用其setter更改属性
view.setUrl(someNewValue);
为每个bean做同样的事情。如果您的bean共享一个公共超类型,您可以使用ApplicationContext#getBeansOfType(Class)
一次性Map
检索所有这些类型。然后迭代条目并更改视图的属性。