2017-06-12 14 views
0

カスタムオブジェクト値をJasperレポートに渡そうとしています。コンパイル済みのジャスパーを使用しています。つまり.jasperファイルです。カスタムクラスをJ2EEアプリケーションのパラメータ/フィールドとして使用する

jrxmlのパラメータにアクセスしようとしているjrxml

<parameter name="STUDENT_ID" class="abc.xyz.Student"/> 

にパラメータを渡す

 <textField> 
      <reportElement x="156" y="100" width="403" height="20" uuid="20cc6538-41d9-4fe5-ba43-e3152b073e10"/> 
      <textFieldExpression><![CDATA[": "+$P{STUDENT_ID}.getId()]]></textFieldExpression> 
     </textField> 

構造:

jasper/ 
    temp.jasper 
WEB-INF/ 
    classes/ 
    lib/ 
    web.xml 

Serviceクラス

Student student = session.get("student") 
HashMap<String, Object> map = new HashMap<String, Object>(1); 
map.put("STUDENT_ID", student); 
print = JasperFillManager.fillReport(ServletActionContext.getServletContext().getRealPath("/jasper/temp.jasper"), map, new JREmptyDataSource()); 

Studentクラスは学生によって異なりますが、Studentクラスのフィールドにはidととgetters and settersがありますが、生成されたPDFファイルでは何らかの値がレンダリングされません。

Studentオブジェクトへのアクセス方法を教えてください。

+0

パラメータで渡す 'Student'オブジェクトが' null'でない場合は、テンプレートデザインの問題がある可能性があります。問題を再現したサンプルJRXMLのサンプルを見ることなく、何が間違っているかはわかりません。 – Narcis

+0

私はクラスパスなどがないと思います。 – piechuckerr

答えて

0

最初のビューではコードに間違いはありませんが、空のデータソースを渡す場合は、必要なフィールドをDatailsバンドに配置しないでください。データソースがなければ、このバンドはレンダリングされません。たとえば、タイトル・バンドにフィールドを置いてテストします。

+0

私はフィールドを細部に持っています。詳細バンドがレンダリングされています。静的フィールドが表示されます。 – piechuckerr

関連する問題