Dynamic jasper 使用简单自定义表达式时遇到问题

Dynamic jasper 使用简单自定义表达式时遇到问题,dynamic-jasper,Dynamic Jasper,我看到很多使用CustomExpression的例子,但出于某种原因,它不适合我。我使用的是Java7,动态Jasper5.0.2,JasperReports5.5.0。 在这个简单的表达式中,我只是试图返回字符串“foo”。似乎evaluate从未被调用,所以所有行都显示为空,而不是“foo”。“foo”示例仅用于测试目的,但我的最终自定义表达式是:一个是两个字段的串联,另一个是用Yes/No替换布尔值1/0 AbstractColumnField=ColumnBuilder.getNew(

我看到很多使用CustomExpression的例子,但出于某种原因,它不适合我。我使用的是Java7,动态Jasper5.0.2,JasperReports5.5.0。 在这个简单的表达式中,我只是试图返回字符串“foo”。似乎evaluate从未被调用,所以所有行都显示为空,而不是“foo”。“foo”示例仅用于测试目的,但我的最终自定义表达式是:一个是两个字段的串联,另一个是用Yes/No替换布尔值1/0

AbstractColumnField=ColumnBuilder.getNew()
.setCustomExpression(getMyCustomExpression())
.setTitle(bundle.getString(fld.getFieldNameDesc()).setWidth(Integer.parseInt(JR_DYNAMIC_DEFAULT_COLUMN_WIDTH))
.setPattern(FieldTypeNameConvertor.getPatternByOracleType(fld.getFieldType()))
.setStyle(getStyle(fld.getFieldType()))
.build();
drb.addColumn(columnField);
...
私有CustomExpression getMyCustomExpression(){
返回新的CustomExpression(){
公共对象求值(映射字段、映射变量、映射参数){
最后一个字符串myString=“foo”;
返回myString;
}
公共字符串getClassName(){
返回String.class.getName();
}
};
}

在单步执行DJ API并修改传递给DynamicJasperHelper.generateJasperReport方法的参数后,问题得到解决。 在我的项目中,我曾尝试使用JasperAPI将动态jasper代码集成到现有的报告框架构建中,其中一些参数被覆盖。必须对现有代码处理参数、区域设置、资源束的方式与DynamicJasper所期望的相比做一些更改(最终在调用GenerateJSPerReport之前将资源和区域设置设置为DynamicReport dr):

dr.setResourceBundle(fooResourceBundleName);
dr.setReportLocale(fooLocale);