我在netbeans中创造了entites和facde。现在我想创建一个本机查询,只从表中获取两个字段。然后将它们绑定到
String query = "SELECT DISTINCT(m.idManufacturer),m.hmid "
+ " FROM model m";
@SuppressWarnings("unchecked")
List<model> modelList = (List<model>) getEntityManager().createNativeQuery(query).getResultList();
然后我使用了这段代码
<f:selectItems itemLabel="#{myController.modelList.idManufacturer}"/>
显示下拉列表中的值。但这似乎不起作用。有什么想法吗?
答案 0 :(得分:0)
尝试从List<Model>
创建selectItems列表,并在值属性中提供该列表。
e.g。
List<SelectItem> modelList = new ArrayList<SelectItem>();
//implement your conversion label value here.
<f:selectItems value="#{myController.modelList}"/>
答案 1 :(得分:0)
如果您使用的是JSF 1.x,则需要向SelectItem[]
的{{1}}提供List<SelectItem>
,Map<String, Object>
或value
。最常见的选择是f:selectItems
。假设您要将List<SelectItem>
(我假设为Model#getIdManfacturer()
)用作项目标签和值,这是一个示例:
Long
与
结合使用public class Bean {
private Long selectedManfacturerId; // +getter +setter
private List<SelectItem> selectManfacturerIds; // +getter
@PostConstruct
public void init() {
selectManfacturerIds = new ArrayList<SelectItem>();
List<Manfacturer> manfacturers = getItFromDatabaseSomehow();
for (Manfacturer manfacturer : manfacturers) {
selectManfacturerIds.add(new SelectItem(manfacturer.getManfacturerId()));
}
}
// ...
}
但是,如果您已经使用JSF 2.0,那么您也可以使用<h:selectOneMenu value="#{bean.selectedManfacturerId}">
<f:selectItems value="#{bean.selectManfacturerIds}" />
</h:selectOneMenu>
。 JSF 2.0 List<SomeBean>
中的新var
属性允许您在视图中声明迭代项。开球的例子:
<f:selectItems>
与
结合使用public class Bean {
private Long selectedManfacturerId; // +getter +setter
private List<Manfacturer> manfacturers; // +getter
@PostConstruct
public void init() {
manfacturers = getItFromDatabaseSomehow();
}
// ...
}