2016-09-03 7 views
3

私はジャスパーレポートのデータソースとして一覧でそれを送信するとき、私は Java Beanが仕様

private Boolean activeRecord; 

@Override 
public Boolean isActiveRecord() { 
    return activeRecord; 
} 

@Override 
public void setActiveRecord(Boolean activeRecord) { 
    this.activeRecord = activeRecord; 
} 

ActiveRecordの

フィールドを持つJava Beanを持って

List<Branch> dataList = new BranchLogic().selectAll(); 
JRBeanCollectionDataSource beanColDataSource = new JRBeanCollectionDataSource(dataList); 

私はエラーメッセージが表示されます

net.sf.jasperreports.engine.JRException:Beanからのフィールド値の取得中にエラーが発生しました:acti veRecord。 .... によって引き起こさ:java.lang.NoSuchMethodException:プロパティ 'ActiveRecordのは、'

なぜ 'クラスcom.tawaak.app.data.domain.model.branch.Branch' クラスにはgetterメソッドを持っていませんジャスパーはゲッターメソッドとしてisActiveRecordを認識しませんか?

答えて

4

接頭辞is...は、プリミティブbooleanを返すメソッドに使用できます。ただし、フィールドactiveRecordはオブジェクト(booleanのラッパータイプ)であるタイプBooleanであり、オブジェクトの場合は常にget...を使用する必要があります。 JavaBeans specificationから

、8.3.2:また

は、boolean特性のために、我々は、ゲッターメソッドがパターンに一致することを可能にする:

public boolean is<PropertyName>(); 

このis<PropertyName>方法の代わりに設けてもよいですget<PropertyName>の方法を用いてもよく、get<PropertyName>の方法に加えて提供してもよい。このように

、次の2つの可能な修正を持っている:

  • あなたactiveRecordbooleanを作成し、ゲッターisActiveRecord()を保ちます。 activeRecordnullにすることができない場合は、これが望ましいアプローチになります。
  • Booleanとしてください。ただし、isActiveRecord()の名前をgetActiveRecord()に変更してください。発信者がnullを正しく処理することを確認する必要があります。