Data binding JFace数据绑定异常

Data binding JFace数据绑定异常,data-binding,jface,Data Binding,Jface,我不熟悉Jface数据绑定。我正在尝试使用数据绑定来创建表。当任何人单击行时,值显示在映射的文本字段中。当我这样做时,我会得到异常。(“java.lang.IllegalArgumentException:在类com.swt.pro.model.Employee中找不到名为的属性”)下面是类结构 我有3个模型类,负责填充1个GUI表 public class WorkplaceDetail extends AbstractModelObject { private int code; priv

我不熟悉Jface数据绑定。我正在尝试使用数据绑定来创建表。当任何人单击行时,值显示在映射的文本字段中。当我这样做时,我会得到异常。(“java.lang.IllegalArgumentException:在类com.swt.pro.model.Employee中找不到名为的属性”)下面是类结构

我有3个模型类,负责填充1个GUI表

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));
公共类WorkplaceDetail扩展了AbstractModelObject{
私有整数码;
私人线厂;
私有字符串压缩;
私有最终列表m_employee=new ArrayList();
}
公共类Employee扩展了AbstractModelObject{
私有字符串名称;
专用内联号码;
私有列表地址=新的ArrayList();
}
公共类地址扩展了AbstractModelObject{
专用串主电话;
私用电话;
}
在主课堂上,我正在填充这些模型的值
List m_workplace=new ArrayList();
public void initializeModels(){
m_workplace.add(新的WorkplaceDetail(1,“IBM”,“12-02-033”);
WorkplaceDetailWorkplace=新WorkplaceDetail();
工作场所。新增员工(新员工(“Prashant”,0));
员工=新员工();
employee.addAddress(新地址(“010-674634”,null,“010-748347”,null,null,null,null,null,null,null));
}
数据绑定方法
ObservableListContentProvider simpleTableViewerContentProviderList=新ObservableListContentProvider();
IObservableMap[]simpleTableViewerLabelProviderMaps=PojoObservables.ObserverMaps(simpleTableViewerContentProviderList.GetKnowneElements(),WorkplaceDetail.class,新字符串[]{“代码”,“工厂”,“压缩项”});
m_workaceViewer.setLabelProvider(新的ObservablePlabelProvider(simpleTableViewerLabelProviderMaps));
m_workplaceViewer.setContentProvider(simpleTableViewerContentProviderList);
WritableList smListWritableList=新的WritableList(m_workplace,WorkplaceDetail.class);
m_workplaceViewer.setInput(smListWritableList);
IObservableMap[]\u simpleTableViewerLabelProviderMaps=PojoObservables.observeMaps(simpleTableViewerContentProviderList.GetKnowneElements(),Employee.class,新字符串[]{“name”});
m_workaceViewer.setLabelProvider(新的ObservablePlabelProvider(_simpleTableViewerLabelProviderMaps));
IObservableMap[]simpleTableViewerLabelProviderMaps_2=PojoObservables.observeMaps(simpleTableViewerContentProviderList.GetKnowneElements(),Address.class,新字符串[]{“phone1”,“phone2”});
m_workaceViewer.setLabelProvider(新的ObservableMapLabelProvider(simpleTableViewerLabelProviderMaps_2));
当我运行此命令时,会出现异常“java.lang.IllegalArgumentException:在类com.swt.pro.model.Employee中找不到名为的属性”


请帮助我解决异常

您的类必须遵循规范(注意,这是不同的“企业JavaBeans”又称EJB)。基本上,您需要添加访问器方法(请参见第7节)并支持PropertyChangeListeners,以便在模型更新时通知UI。

我已在bean类中设置了该属性,即使在这样的情况下,我也会遇到此异常“public void setEmpName(String empname){Object oldValue=getEmpName();Object newValue=empName;firePropertyChange(“empName”,oldValue,newValue);}”