0

私は Jface データバインディングが初めてです。データバインディングを使用してテーブルにデータを入力しようとしています。行をクリックすると、マップされたテキストフィールドに値が表示されます。これを行うと、例外が発生します。 ")以下はクラス構造です。

1 つの GUI テーブルの作成を担当する 3 つのモデル クラスがあります。

public class WorkplaceDetail extends AbstractModelObject {

private int code;
private String plant;
private String compRegNum;
private final List <Employee> m_employee = new ArrayList();
}

public class Employee extends AbstractModelObject{


private String empName;
private int empNumber;
private List<Address> address = new ArrayList();
}

public class Address extends AbstractModelObject{

private String primaryPhone;
private String secPhone;
}

In main class I am populating value of these models

List<WorkplaceDetail> m_workplace = new ArrayList();

public void initializeModels() {
m_workplace.add(new WorkplaceDetail(1,"IBM","12-02-033",));
WorkplaceDetail workplace= new WorkplaceDetail();
workplace.addEmployee(new Employee ("Prashant",0));
Employee employee= new Employee();
employee.addAddress(new Address("010-674634",null,"010-748347",null,null,null,null,null,null)); 
}

Databinding method

ObservableListContentProvider simpleTableViewerContentProviderList = new ObservableListContentProvider();
IObservableMap[] simpleTableViewerLabelProviderMaps = PojoObservables.observeMaps(simpleTableViewerContentProviderList.getKnownElements(), WorkplaceDetail.class, new String[]{"code","plant", "compRegNum"});
m_workplaceViewer.setLabelProvider(new ObservableMapLabelProvider(simpleTableViewerLabelProviderMaps)); 
m_workplaceViewer.setContentProvider(simpleTableViewerContentProviderList);

WritableList smListWritableList = new WritableList(m_workplace, WorkplaceDetail.class);
m_workplaceViewer.setInput(smListWritableList);

IObservableMap[] _simpleTableViewerLabelProviderMaps = PojoObservables.observeMaps(simpleTableViewerContentProviderList.getKnownElements(), Employee.class, new String[]{"name"});
m_workplaceViewer.setLabelProvider(new ObservableMapLabelProvider(_simpleTableViewerLabelProviderMaps));


IObservableMap[] simpleTableViewerLabelProviderMaps_2 = PojoObservables.observeMaps(simpleTableViewerContentProviderList.getKnownElements(), Address.class, new String[]{ "phone1", "phone2"});
m_workplaceViewer.setLabelProvider(new ObservableMapLabelProvider(simpleTableViewerLabelProviderMaps_2));

これを実行すると、「java.lang.IllegalArgumentException: クラス クラス com.swt.pro.model.Employee に名前 name のプロパティが見つかりませんでした」という例外が発生します。

例外を解決するのを手伝ってください

4

1 に答える 1

0

クラスはJava Beans仕様に従う必要があります(これは「Enterprise Java Beans」別名 EJB とは異なることに注意してください)。基本的に、アクセサー メソッドを追加し (セクション 7 を参照)、PropertyChangeListeners をサポートして、モデルが更新されたときに UI に通知する必要があります。

于 2012-10-31T16:41:42.203 に答える