欢迎光临
一个有态度、有温度的分享型博客

基于Maven的Java Spring Web工程部署ureport2报表项目

这里我是在现有的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

参考:

  1. https://www.cnblogs.com/YingYue/p/5699962.html;
  2. http://wiki.bsdn.org/pages/viewpage.action?pageId=76448360 ;
转载请注明出处:容休博客 » 基于Maven的Java Spring Web工程部署ureport2报表项目

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址