jasper-reports - Jasperreports 服务器输入控制错误
问题描述
问题:
在使用单选查询创建输入控件时,如果我们在值或可见字段中包含任何 RAW ID(如 GUID),服务器将引发运行时异常:
2018-09-11 14:25:50,813 ERROR GenericExceptionMapper,http-nio-8080-exec-1:51 - Unexpected error occurs
java.lang.IllegalStateException: Processor of type com.jaspersoft.jasperserver.war.cascade.handlers.converters.DataConverter for class [B not configured
细节
Jasperreports 服务器版本:6.6.0
如何重现:上传任何示例报告并编辑此报告。通过选择单选查询选项向此报表添加输入控件。填写必填字段并在定义查询页面上添加以下查询
select sys_guid() as ID from dual
然后在设置参数值页面上输入 ID 作为值列和 ID 作为可见列。提交并保存输入控件和报表。当您执行此报告时,Jasperreports 服务器会抛出上述错误。
任何帮助将不胜感激。
解决方案
该错误是由于 RAW 值通过 JDBC 映射到 byte[] 导致的,并且 JasperReports Server 输入控制代码无法处理字节数组。
解决方案是更改查询以通过 RAWTOHEX 将 RAW 值转换为 VARCHAR/String 值
select RAWTOHEX(sys_guid()) as ID from dual
推荐阅读
- vue.js - VueJS 和数据表
- algorithm - 检查一个简单的无向图是否是三连接的
- c++ - 使用 boost 序列化多态类
- python - VSC 将为 Azure Functions 重新创建整个 Python 环境
- java - 如何在 Vaadin Flow 中使用自定义组合框过滤和 DataProvider?
- python - 关于 randint 和 if 的问题
- c++ - 什么是使用 opencv::Mat 优化 c++ 矩阵计算
- sass - 用户代理样式表位于何处,如何禁用它?
- ios - 使用 NSRunLoop 正确使用辅助 NSThread
- spring-data-jpa - Neo4jTransactionManager 不允许支持自定义隔离级别