13

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で値を取得すると、型指定された例外がスローされます。

4

2 に答える 2

6

自動的に変換する必要があります。ただし、java.util.Date とは異なる Date オブジェクトを使用していませんか? そこにはかなりの数のそれらがあります...

本当に動作しない場合は、日付を文字列 (ISO 8601 形式) として格納し、.NET 側で DateTime.Parse を使用することで回避できます。

しかし、私が言ったように、通常は正常に動作するため、おそらく何か他の問題が発生している可能性があります.

あなたの ADF は .NET の他のものに対して正常に動作していますか? たぶん、.NET 側のセットアップ手順が欠落している...

于 2012-07-12T12:56:40.070 に答える
4

少し長文ですが、この質問/回答に記載されているように、正しい JDBC ドライバーがインストールされていることを確認できますか?

Tridion Broker Service (2009 SP1) から CustomMeta をロードする際の例外

日付の値には時間が含まれていますか? ストアから値を取得したときに、それが確実に行われることを確認できますか?

于 2012-07-21T10:12:40.393 に答える