AmbientDataFramework中的Date / DateTime对象类型

时间:2012-07-12 12:46:49

标签: 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);

这很棒,生活很棒:)。

在我的网络应用程序(即.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 Data对象被转换为.net DateTime。

由于

约翰

更新

根据Peter的建议,我检查并确保正确的jar文件到位。

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

2 个答案:

答案 0 :(得分:6)

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

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

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

你的ADF在.NET中的其他方面是否正常工作?也许它缺少.NET方面的设置步骤......

答案 1 :(得分:4)

有点远,但是你可以验证是否安装了正确的JDBC驱动程序,如本问题/答案中所述?

Exception loading CustomMeta from Tridion Broker Service (2009 SP1)

日期值,是否包含时间?当你从商店获得价值时,你能确保它能做到吗?