选择此报表的请尽早放弃,文档少,网上示例少,官方没靠谱的技术支持,项目着急不要在此浪费时间。
这里我是在现有的Java Web工程中增加UReport2报表组件的支持。步骤如下:
修改Maven的pom.xml文件
增加如下内容:
<!--ureport http://www.bstek.com-->
<dependency>
<groupId>com.bstek.ureport</groupId>
<artifactId>ureport2-console</artifactId>
<version>2.2.9</version>
</dependency>
修改web.xml文件
1)修改context-param
原来的配置如下:
<!-- 配置需要装载的Spring配置文件 -->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>
classpath*:/spring/datasource.xml
classpath*:/spring/spring-context.xml
classpath*:/spring/mybatis-context.xml
classpath*:/spring/service/*
classpath*:/spring/dao/*
</param-value>
</context-param>
修改为:
<!-- 配置需要装载的Spring配置文件 -->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>
classpath*:/spring/datasource.xml
classpath*:/spring/spring-context.xml
classpath*:/spring/mybatis-context.xml
classpath*:/spring/service/*
classpath*:/spring/dao/*
classpath:ureport-console-context.xml
</param-value>
</context-param>
2)增加ureport servlet
配置
<servlet>
<servlet-name>ureportServlet</servlet-name>
<servlet-class>com.bstek.ureport.console.UReportServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>ureportServlet</servlet-name>
<url-pattern>/ureport/*</url-pattern>
</servlet-mapping>
修改完上面的配置,启动项目,我的报错如下:
org.springframework.beans.factory.BeanDefinitionStoreException: Invalid bean definition with name 'ureport.fileReportProvider' defined in class path resource [ureport-core-context.xml]: Could not resolve placeholder 'ureport.fileStoreDir' in string value "${ureport.fileStoreDir}";
这是因为:
Spring容器采用反射扫描的发现机制,在探测到Spring容器中有一个 org.springframework.beans.factory.config.PropertyPlaceholderConfigurer的 Bean就会停止对剩余PropertyPlaceholderConfigurer的扫描(Spring 3.1已经使用PropertySourcesPlaceholderConfigurer替代 PropertyPlaceholderConfigurer了)。
而<context:property-placeholder/>
这个基于命名空间的配置,其实内部就是创建一个PropertyPlaceholderConfigurer Bean而已。换句话说,即Spring容器仅允许最多定义一个PropertyPlaceholderConfigurer(或<context:property-placeholder/>
),其余的会被Spring忽略掉(其实Spring如果提供一个警告就好了)。
我的数据源也是通过properties方式配置的,spring默认只能初始化一个properties。
解决办法:
修改数据源配置:
<bean id="propertyConfigurer"
class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<!-- 注释掉以下property将从环境变量中读取配置数据源配置 -->
<property name="locations">
<list>
<value>classpath:datasource.properties</value>
</list>
</property>
</bean>
修改为:
<bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<!-- 注释掉以下property将从环境变量中读取配置数据源配置 -->
<property name="locations">
<list>
<value>classpath:datasource.properties</value>
</list>
</property>
<property name="ignoreUnresolvablePlaceholders" value="true"></property>
<property name="order" value="1"></property>
</bean>
定义报表文件保存位置
如果你采用tomcat运行项目,默认保存在WEB-INF下的ureportfiles文件夹,这里我修改为D:/ureportfiles
;
修改配置:
<bean id="propertyConfigurer"
class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<!-- 注释掉以下property将从环境变量中读取配置数据源配置 -->
<property name="locations">
<list>
<value>classpath:datasource.properties</value>
<value>classpath:ureportconfig.properties</value>
</list>
</property>
<property name="ignoreUnresolvablePlaceholders" value="true"></property>
<property name="order" value="1"></property>
</bean>
在ureportconfig.properties
增加:
# 报表文件保存位置
ureport.fileStoreDir=D:/ureportfiles
然后正常启动项目:
设计报表:http://localhost:8080/${project_name}/ureport/designer
;
查看报表:http://localhost:8080/${project_name}/ureport/preview?_u=file:queryApplyStatistics.ureport.xml
参考:
- https://www.cnblogs.com/YingYue/p/5699962.html;
- http://wiki.bsdn.org/pages/viewpage.action?pageId=76448360 ;
最新评论
我的是ipv4网络,如何使用直播源啊!
我今天试了,不想啊,我的是新疆昌吉移动的网络。
收不到验证码电报
现在充值29起了