2014-08-04 1 views
0

Я получил ошибку ниже, передав выражение источника данных в подзаголовок.Не удалось передать выражение источника данных в подзаголовок

net.sf.jasperreports.engine.fill.JRExpressionEvalException: Error evaluating expression : 
Source text : new net.sf.jasperreports.engine.data.JRBeanCollectionDataSource($P{dataSourceHash}) 

код Java:

Vector rs = ..... // return record set from SQL, e.g. select name from table 

Map<String, Object> parm = new HashMap<String, Object>(); 
parm.put("dataSourceHash", new JRBeanCollectionDataSource(rs)); 

Основной доклад:

<parameter name="dataSourceHash" class="java.util.Collection" > 
.... 

     <subreport> 
      <reportElement uuid="b60242b1-6bbb-4b6b-b54d-bf9a32cf3ec5" x="0" y="0" width="100" height="24"/> 
      <dataSourceExpression><![CDATA[new net.sf.jasperreports.engine.data.JRBeanCollectionDataSource($P{dataSourceHash})]]></dataSourceExpression> 
     <subreportExpression><![CDATA["C:\\add_template.jasper"]]></subreportExpression> 
     </subreport> 

подотчета:

<textFieldExpression><![CDATA[$F{NAME}]]></textFieldExpression> 

Пожалуйста, посоветуйте.

ответ

0

В параметре jrxml $ P {datasourceHash} объявлен как java.util.Collection. Но на самом деле вы проходите JRBeanCollectionDataSource - это не java.util.Collection.

Как это должно работать?

В подрепорте есть конструктор new JRBeanCollectionDataSource (DataSource) ???. Но параметр этого конструктора - это коллекция.

Одним из возможных решений:

заменить

parm.put("dataSourceHash", new JRBeanCollectionDataSource(rs)); 

в

parm.put("dataSourceHash", rs); 

 Смежные вопросы

  • Нет связанных вопросов^_^