SDL Tridion 2009 で Ambient Data Framework を使用しているときに、Date (java) / DateTime (.net) 型に少し問題があります。
次のようにJavaでクレーム値を設定しています:
Date myDate = rs.getDate("DATE_FIELD_IN_DB");
store.put(CLAIM_URI_DATE, myDate);
これは素晴らしいことであり、人生は素晴らしいものです:)
私の Web アプリケーション (.net) では、クレーム ストアからこの値を取得する必要がありますが、取得しようとすると失敗します。
私のコードは次のとおりです。
if (_store.Contains(new Uri("taf:claim:company:date"))) {
DateTime claimdata = _store.Get<DateTime>("taf:claim:company:date");
Response.Write(claimdata.ToString());
}
エラーメッセージは次のとおりです。
[RuntimeException] Codemesh.JuggerNET.NTypeValue.Throw(Int64 inst) +373 Codemesh.JuggerNET.JavaClass.ThrowTypedException(Int64 inst) +1365 Codemesh.JuggerNET.JavaMethod.CallInt(JavaProxy jpo) +233 Tridion.ContentDelivery.AmbientData.JuggerNetTypeHelper. FromProxyObject(オブジェクトproxyObject) +738
Tridion.ContentDelivery.AmbientData.ClaimStore.Get(Uri claimUri) +109
また、オブジェクトとして取得しようとしましたが、それを DateTime にキャストしました。私は明らかにここで本当に基本的なエラーを犯しています。どんな助けでも大歓迎です。
ここでSDLドキュメントも読みました:http ://sdllivecontent.sdl.com/LiveContent/content/en-US/SDL_Tridion_2011_SPONE/concept_26FDE76C277D43F893175E512EFDF09Aは、Javaデータオブジェクトが.net DateTimeに変換されることを示しています。
ありがとう
ジョン
アップデート
Peter の提案に従って、正しい jar ファイルが配置されていることを確認しました。
日付は「日付」タイプとして SQL データベースに保存されることに注意してください。通常の値には、「2011-09-03」などのタイムスタンプは含まれません。それでも、これはすべてJavaでうまく機能し、値を日付として扱うことができます。それでも.Netで値を取得すると、型指定された例外がスローされます。