У меня возникла проблема с типом Date (java)/DateTime (.net) при использовании Ambient Data Framework в SDL Tridion 2009.
Я устанавливаю значение претензии в java следующим образом:
Date myDate = rs.getDate("DATE_FIELD_IN_DB");
store.put(CLAIM_URI_DATE, myDate);
Это здорово, и жизнь фантастическая:)
В моем веб-приложении (которое есть .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(Object 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.
Спасибо
Джон
UPDATE
В соответствии с предложениями Питера, я проверил и обеспечил правильные файлы jar на месте.
Возможно, стоит отметить, что дата хранится в базе данных SQL как тип "Дата", типичное значение не включает метку времени, например "2011-09-03". Тем не менее все это отлично работает на Java, и я могу работать со значением в качестве даты. Однако при получении значения в .Net генерируется типизированное исключение.