次のメソッドを持つ 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 リストに追加されます。
私が抱えている問題は、ユーザーが作成したアクターがデータベースに永続化されていないため、このアクターを選択するとコンバーターが null を返すことです。この参照が最初のアクタと同じであることをコンバーターに伝える方法がわかりません。