“空转换器”的 selectOneMenu 转换错误设置值

问题描述

我有两个处于关系中的实体:

// Produkt
@ManyToOne
private Hersteller hersteller;

// Hersteller
@OnetoMany(targetEntity = Produkt.class)
private List<Produkt> produkte;

我有一个 jsf 表单来编辑 Produkt 实体(目前还可以)。 现在我想更改“Produkt”的“Hersteller”。

<h:selectOneMenu styleClass="form-control" id="hersteller" value="#adminProduktMgmtHandler.produkt.hersteller}">
          <f:selectItems value="#{adminProduktMgmtHandler.hersteller}" var="hersteller" itemLabel="#{hersteller.name}" itemValue="#{hersteller}" />
</h:selectOneMenu>

输出是正确的,但是当我提交时出现以下错误

Conversion Error setting value for 'null Converter'

生成的html:

<select id="kunden-form-register:hersteller" name="kunden-form-register:hersteller" class="form-control" size="1">  <option value="de.hsb.app.gws.model.Hersteller@2169a647">Coca Cola</option>
    <option value="de.hsb.app.gws.model.Hersteller@3d9db94c">PepsiCo</option>
</select>

我是 jee/jsf 的新手,但我认为它应该通过正确传递对象来工作,对吗?我不必使用 id 和 itemValue 来设置它?

解决方法

解决办法: 好的,只需将 id 设置为 itemValue...

<h:selectOneMenu styleClass="form-control" id="hersteller" value="#{adminProduktMgmtHandler.produkt.hersteller.id}">
    <f:selectItems value="#{adminProduktMgmtHandler.hersteller}" var="hersteller" itemLabel="#{hersteller.name}" itemValue="#{hersteller.id}" />
</h:selectOneMenu>