13

在 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 中获取值时,会引发类型化异常。

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 回答