在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中获取值时,会抛出类型异常.
我在SDL Tridion中设置了发布目标,将文件(aspx)推送为UTF-8.
页面已发布但在浏览器中呈现时仍然会看到一些奇怪的编码问题.
我可以使用记事本编辑服务器上的文件并将其保存为UTF-8,从而解决了问题.所以我有点担心为什么会发生这种情况,而且我以前看到过这种情况,但是不记得它是如何解决的.
我在发布目标中尝试了一些其他选项,例如'System Default',但我仍然看到同样的问题.
谢谢
约翰
我正在写一个GUI扩展和使用Anquilla框架来获取列表Keywords内Category.我正在获取关键字列表的XML文档,然后在我的扩展中使用该文档.
我的问题是返回的XML不包含关键字的' Description'值.我有标题和密钥等.
我的原始代码如下所示:
var category = $models.getItem("CATEGORYTCMID:);
var list = category.getListKeywords();
list.getXml();
Run Code Online (Sandbox Code Playgroud)
返回的典型节点是:
<tcm:Item ID="tcm:4-1749-1024"
Type="1024" Title="rate_one" Lock="0" IsRoot="true"
Modified="2012-12-17T23:01:59" FromPub="010 Schema"
Key="rate_one_value" IsAbstract="false"
CategoryTitle="TagSelector"
CategoryID="tcm:4-469-512" Icon="T1024L0P0"
Allow="268560384" Deny="96" IsNew="false"
Managed="1024"/></tcm:ListKeywords>
Run Code Online (Sandbox Code Playgroud)
所以我尝试使用过滤器为我提供额外的列信息:
var filter = new Tridion.ContentManager.ListFilter();
filter.columns = Tridion.Constants.ColumnFilter.EXTENDED;
var list = category.getListKeywords(filter);
Run Code Online (Sandbox Code Playgroud)
不幸的是,这只提供了额外的XML属性:
IsShared="true" IsLocalized="false"
Run Code Online (Sandbox Code Playgroud)
我非常希望描述值成为XML的一部分,而无需从XML创建Keyword对象.这样的事情可能吗?
咳嗽任何想法?咳嗽
在我的发布场景中,我们有多个部署者将内容推送到文件系统和数据库(代理).页面和二进制文件放在文件系统上,Broker中的其他所有内容.我们有一个部署人员将内容放入数据库.这是推荐的最佳做法吗?
如果所有部署者中的存储配置也将内容放入数据库,Tridion如何处理?这会导致重复的条目,锁定失败等吗?
我担心在撰写本文时,我无法访问一个环境来测试它是如何工作的.
我很难将Windows资源管理器中的WebDAV网络位置映射到我当地的SDL Tridion 2011 SP1网站.我正在使用在Windows 2008 R2上运行的CME服务器.我没有在机器上安装办公工具来尝试测试WebDAV连接,我还需要其他东西吗?
我已经浏览了Jaime的部署程序教程.
我已经成功创建了我的部署者扩展,当与SDL Tridion集成时,功能完全按照要求工作.
但是,我无法工作的是本地调试/运行与eclipse中的部署者(此处记录)
基于eclipse的部署程序确实运行.如果我将我的zip文件放入我的测试传入文件夹中,则会拾取并处理zip.但是,我编写的customdeployer代码永远不会输入或执行.
我在'eclipse'部署日志中没有出现任何错误,但它始终停在以下行:
2012-04-13 20:24:51,642 DEBUG QueueLocationHandler - 删除部署包上的独占锁:tcm:0-1026-66560,类型为:CONTENT.
由于我们这里的三位开发人员在他们所有的机器上都遇到了同样的问题,我想知道(希望!)这是一个常见的问题,有人知道我们做错了什么.
谢谢
我看到我的Ambient数据框架代码是在每个http请求上输入的,所以如果一个页面有5个图像,那么一个网页运行代码6次.
是否有一种简单的方法只在请求页面(aspx)时运行代码?
我正在使用Tridion 2009,IIS 7和.Net 4.0
谢谢
约翰
我想根据我们提供的日期创建一个SmartTarget促销活动.
如果提供的日期超过4周(提供日期<=今天 - 4周),则应显示促销.
我看不到在SmartTarget中配置它的方法,并想知道这是否可行?
没错,我正在寻找构建变量,如'DateIsOlderThan4Weeks'并将其配置为布尔值.
在我这样做之前,我认为最好检查一下是否有一个更优雅的解决方案,因为客户可能决定根据其他时间段实现类似的逻辑,如果他们不需要询问开发人员每次都要添加一些逻辑.
提前致谢 :)
有没有办法围绕发布网站左上角显示的"SDL Tridion"按钮配置一些设置?
我想去镇上:
提前致谢.
我正在尝试使用TOM.NET API获取给定页面或组件的已发布时间戳到给定目标.在这个Page或者Component对象下不是很明显,有人能指出我正确的方向吗?