我有一个具有以下方法的 JSF 转换器:
@Override
public Object getAsObject(FacesContext context, UIComponent component, String value) {
Actor a = getEjbCasos().getActorByName(value);
return a;
}
这是从 SelectOneMenu 调用的:
<h:selectOneMenu id="actores" value="#{crearCasosBean.currentActor}">
<f:selectItem noSelectionOption="true"/>
<f:selectItems value="#{crearCasosBean.actorRows}" var="actor" itemLabel="#{actor.name}" itemValue="#{actor}"/>
<f:converter binding="#{actorConverter}"/>
</h:selectOneMenu>
用户可以输入新的演员名称,而不是选择演员,这会创建一个新的演员实体,但不会将其保存到数据库中。然后将此 Actor 名称添加到 actorRows 列表中,以便下次可以选择它。
我遇到的问题是,由于用户创建的 Actor 尚未保存到数据库中,因此当他们选择此 Actor 时,转换器返回 null。我不确定如何告诉转换器这个引用应该与第一个 Actor 相同。