私はJSFからJPA管理する日付値にアクセスし、それは(JPA-管理する日付値を使用して日付変換例外が
'Cannot convert 01.01.10 00:00 of type class java.util.Date to class org.apache.openjpa.util.java$util$Date$proxy
を言っjavax.faces.component.UdateModelExceptionに戻ってきましたそれはELから直接使用する場合は正常に動作します)、それがプロキシされることを意味することは、これを好き:
'<h:outputLabel value="MyDateValue" for="input"/>
'<h:inputText id="inputDate" value="#{bean.myDate}"/>
しかし、それは複合コンポーネントで をそれを使用しようとすると、トラブルの原因となり、次のコンバータの例外をバック与え、これができモデルを更新する...
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>
仮定(簡略化)JSF複合コンポーネント: それ値は複合内部からアクセスされているときのOpenJPAのプロキシ交換が別の方法で処理されると思われます。私の推測では、ELリゾルバは、コンポジットに渡されるときにオブジェクト値への呼び出しを別々に処理します。コンポジットに渡すことは、コンポジット内で最初にアクセスされたことを意味します。これは遅すぎるため、プロキシの必要な置換が行われません(コンバーターの例外)。
MyFacesの表現言語を変更しようとしましたが、最後にクラスローディングを親に変更し、libフォルダのglassfishからel-implとel-apiを提供し、MyFacesに必要なコンテキストパラメタを挿入したにもかかわらず、Websphereでは動作しませんでした
どのように使用しますか複合コンポーネントのJPA管理日付(または他のプロキシエンティティ)???
コンポジットコンポーネントを使用していないときに動作することを暗示しているようです(したがって、コンポーネントをページの「通常の方法」で直接使用する場合)。これは本当ですか? – BalusC
@BalusC右。それを "直接"使用すると、期待どおりに動作します。私はMyFaces Resolverがhttps://cwiki.apache.org/MYFACES/elresolver-ordering.htmlでソートされていることを発見しました。別のELFactoryImpl(JBoss El 2.0.1)を使用すると、JPAのプロキシされた日付のトリックは、WebSphere 8に登録するのは面倒ですが、メソッド呼び出しはそのelでもう機能しません。 – jonnie119
前にこの問題を見ましたが、MyFacesも使用していません。あなたはMyFacesの代わりにMojarraを試す機会がありますか?ただそれを除外することですが。 – BalusC