在 SDL Tridion 2009 中使用环境数据框架时,我遇到了 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(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。
谢谢
约翰
更新
根据彼得的建议,我已经检查并确保正确的 jar 文件到位。
值得一提的是,日期作为“日期”类型存储在 SQL 数据库中,典型值不包括时间戳,例如“2011-09-03”。在 Java 中,这一切功能仍然很好,我可以将值用作日期。仍然在 .Net 中获取值时,会引发类型化异常。