我正在尝试使用 Wicket 在表单中创建一个简单的下拉选择框,但被 Wicket 抛出的异常所困扰。如下:
最后一个原因:没有为类定义get方法:类java.lang.Long表达式:id
当我继续检查代码和 Wicket 文档时,我根本无法弄清楚我做错了什么,并且可以利用 Stackoverflow 和 Wicket 社区的帮助。以下是一些相关的代码片段......首先,我的表单使用了 CompoundPropertyModel:
add(jobForm);
// Unrelated fields snipped, see 'employmentTypeId':
jobForm.setModel(new CompoundPropertyModel<Job>(jobModel));
jobForm.add(new DropDownChoice("employmentTypeId", new List<GenericPickList>, new ChoiceRenderer<GenericPickList>("description", "id")));
DropDownChoice中的参数解释:#1,组件的wicket:id,#2,在实际实现中,这是一个GenericPickList(即List)的全填充List集合,#3,我的ChoiceRenderer标识描述字段作为显示值和作为 ID 的 id 值,均来自 GenericPickList 类。
GenericPickList 类很简单:
public class GenericPickList {
private long id;
private String description;
public long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
}
该错误表明 ChoiceRenderer 没有在 GenericPickList 中找到 id 字段的 getter,但它就在那里,所以我相信我的假设是不正确的。任何人都可以对此提供任何见解吗?
作为补充说明(和令人沮丧的一点),从 ChoiceRenderer 构造函数中删除“id”似乎可以正常工作:
new ChoiceRenderer<GenericPickList>("description");
当然,由于这些是与主键关联的数据驱动值,因此出于我的目的需要包含 ID 值。