JasperSoft 6.1 CE服务器如何适配dd/mm/yyyy格式日期输入?
问题背景
我的JasperSoft版本信息如下:
<serverInfo><build>BUILD_DATE_STAMP_BUILD_TIME_STAMP</build><dateFormatPattern>yyyy-MM-dd</dateFormatPattern> <datetimeFormatPattern>yyyy-MM-dd'T'HH:mm:s:s:s:ss</datetimeFormatPattern> <edition>CE</edition><version>6.1</version> </serverInfo>
在localhost:8080/jasperserver/本地生成报表时,发现日期类型输入框中的“20/05/2018”在发送给JasperServer前会被转换为“2018-05-20”。
我有一套通过REST调用Jasper的ERP系统,应用中日期格式固定为dd/mm/yyyy,因无源码权限无法修改该格式。现咨询:是否可修改JasperServer使其支持dd/mm/yyyy格式的日期输入?
可行解决方案
针对你的JasperServer 6.1 CE版本的需求,我整理了几个实操性强的方案,你可以根据实际情况尝试:
方案1:全局修改JasperServer的日期格式配置
这个方案会让整个JasperServer系统默认支持dd/MM/yyyy格式的日期输入,步骤如下:
- 找到JasperServer安装目录下的
WEB-INF/bundles/jasperserver_messages.properties文件(如果是多语言环境,对应语言的properties文件,比如中文环境找jasperserver_messages_zh_CN.properties) - 找到并修改以下两个配置项为目标格式:
date.format=dd/MM/yyyy date.time.format=dd/MM/yyyy HH:mm:ss注意:这里要用大写的
MM代表月份,小写mm是分钟的意思,别写错导致日期解析出错 - 接着检查
WEB-INF/applicationContext.xml中的日期格式化bean,确保它关联了上述配置:<bean id="dateFormatter" class="org.springframework.format.datetime.DateFormatter"> <constructor-arg value="#{T(com.jaspersoft.jasperserver.api.common.util.spring.PropertiesUtil).getProperty('date.format')}"/> </bean> - 最后重启JasperServer服务,让配置生效
方案2:针对单个报表修改参数日期格式
如果不想全局调整,只想让特定报表支持该格式,可以这么操作:
- 打开JasperStudio,打开目标报表文件
- 选中报表里的日期类型参数,在右侧属性面板找到Format Pattern,设置为
dd/MM/yyyy - 重新将报表发布到JasperServer,该报表的日期参数就会接受并解析
dd/MM/yyyy格式的输入了
方案3:自定义REST请求拦截器(进阶方案)
如果上述配置修改受限,还可以通过开发自定义扩展来处理:在JasperServer端添加一个REST请求拦截器,自动将请求中dd/MM/yyyy格式的日期转换为系统默认的yyyy-MM-dd格式。不过这个方案需要一定的Java开发能力,适合有技术储备的场景。
内容的提问来源于stack exchange,提问作者Jake
相关产品推荐
相关产品推荐

