JSF から JPA 管理の日付値にアクセスすると、javax.faces.component.UdateModelException が返されます。
'Cannot convert 01.01.10 00:00 of type class java.util.Date to class org.apache.openjpa.util.java$util$Date$proxy
JPA で管理された日付値 (プロキシされていることを意味します) を使用すると、次のように EL から直接使用すると正常に動作します。
'<h:outputLabel value="MyDateValue" for="input"/>
'<h:inputText id="inputDate" value="#{bean.myDate}"/>
ただし、複合コンポーネントで使用しようとすると問題が発生し、次のコンバーター例外が返され、モデルを更新できません...
(簡略化された) JSF 複合コンポーネント inputDate.xhtml
<head>
<title>A date input field</title>
</head>
<composite:interface>
<composite:attribute name="dateValue"/>
</composite:interface>
<composite:implementation>
<h:outputLabel value="MyDateValue" for="input"/>
<h:inputText id="input" value="#{cc.attrs.dateValue}"/>
</composite:implementation>
前提: OpenJPA でのプロキシ置換は、値がコンポジット内からアクセスされている場合に異なる方法で処理されるようです。私の推測では、EL リゾルバーはオブジェクト値への呼び出しをコンポジットに渡されるときに異なる方法で処理します。それをコンポジットに渡すということは、最初にコンポジット内でアクセスされることを意味しますが、これでは遅すぎて、必要なプロキシの置換が行われません (したがって、コンバータ例外)。
そこで、MyFaces の Expression Language を変更しようとしましたが、クラスのロードを最後に親に変更し、lib フォルダーに Glassfish から el-impl と el-api を提供し、必要なコンテキストを挿入したにもかかわらず、Websphere では機能しませんでした。 -MyFaces のパラメータ
複合コンポーネントでJPA管理の日付(または他のプロキシされたエンティティ)をどのように使用しますか???