当前位置: 首页 > 知识库问答 >
问题:

JFace数据绑定异常

闾丘谦
2023-03-14

我是Jface数据绑定的新手。我正在尝试使用数据绑定来生成表。当任何一个人单击row时,在映射的文本字段中显示vales。当我这样做时,我得到异常。(“java.lang.IllegalArgumentException:Could not find property with name in class class 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));

当我运行时,我得到异常“java.lang.IllegalArgumentException:Could not find property with name in class class com.swt.pro.model.employee”

请帮我解决这个异常

共有1个答案

司空赞
2023-03-14

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

 类似资料:
  • 数据绑定 JXML 中的动态数据来自于该 Page 的 data字段。 简单绑定 数据绑定使用 Mustache 语法(双大括号)将变量包起来,可以作用于以下: 页面内容 <view> hello {{ name }} </view> Page({ data: { name: 'cortana' } }) 组件属性(需要在双引号之内) <view id="{{id}}"> </

  • attr绑定是用来为html元素绑定属性值的,这种绑定非常有用,例如我们需要想一个元素添加title属性,或者为img标签添加src属性。 示例代码: //.W片段 <a bind-attr="{ href: url, title: details }"> Report </a> //js片段 this.url=justep.Bind.observable("year-end.html"),

  • submit绑定只能用在form元素中,当form提交的时候被触发,并且默认阻止form的提交。因此我们通常在submit的处理函数中以ajax的方式提交form表单。 示例代码: //.W片段 <form bind-submit="doSomething"> ... form contents go here ... <button type="submit">Submit</butt

  • with绑定用来创建一个绑定上下文,在子元素内的所有绑定都在这个上下文中进行。 示例代码: //.W片段 <h1 bind-text="city"> </h1> <p bind-with="coords"> Latitude: <span bind-text="latitude"> </span>, Longitude: <span bind-text="longitude"> </span

  • foreach绑定用来处理数组,通常用来将一个数组绑定到一个列表或者table中。在foreach绑定中,我们可以使用if、with等嵌套绑定。 示例代码: //.W片段 <table> <thead> <tr><th>First name</th><th>Last name</th></tr> </thead> <tbody bind-foreach="people"> <tr>

  • selectedOptions绑定用在select元素中,用来绑定已选中的对象,通常被用在多选列表中。如果列表为单选列表(下拉列表),选中值可以用value绑定。 示例代码 //.W片段 <p> Choose some countries you'd like to visit: <select bind-options="availableCountries" bind-selectedO