AmbientDataFramework中的Date/DateTime对象类型

joh*_*ter 13 tridion

在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);
Run Code Online (Sandbox Code Playgroud)

这很棒,生活很棒:)

在我的Web应用程序(即.net)中,我需要从声明存储中获取此值,当我尝试这样做时,它会失败:

我的代码是:

if (_store.Contains(new Uri("taf:claim:company:date"))) {
  DateTime claimdata = _store.Get<DateTime>("taf:claim:company:date"); 
  Response.Write(claimdata.ToString());
}
Run Code Online (Sandbox Code Playgroud)

并且错误消息是:

[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 Data对象被转换为.net DateTime.

谢谢

约翰

UPDATE

根据彼得的建议,我检查并确保正确的jar文件到位.

值得一提的是,日期作为"日期"类型存储在SQL数据库中,典型值不包括时间戳,例如"2011-09-03".仍然这一切都在Java中很好用,我可以将值作为日期使用.仍然在.Net中获取值时,会抛出类型异常.

Pet*_*aer 6

它应该自动转换它.但是,您确定没有使用与java.util.Date不同的Date对象吗?那里有不少人......

如果你真的无法让它工作,你可以通过将日期存储为字符串(ISO 8601格式)然后在.NET端使用DateTime.Parse来解决它.

但就像我说的:它通常工作正常,所以可能还有其他问题.

您的ADF是否适用于.NET中的其他内容?也许它缺少.NET方面的设置步骤......