Xpages 按键属性初始化文档数据源(而不是UNID)
我们有一些文件包含一些参考文件的“密钥”。我们不使用unid是有原因的。我想用这个键值初始化数据源。所以,在DocumentID属性中,我编写脚本来打开视图,查找指定的文档并使用查找到的UNID来初始化数据源。 我认为这不是最佳解决方案 问题:是否有更好的方法基于键值初始化文档数据源 示例代码:Xpages 按键属性初始化文档数据源(而不是UNID),xpages,Xpages,我们有一些文件包含一些参考文件的“密钥”。我们不使用unid是有原因的。我想用这个键值初始化数据源。所以,在DocumentID属性中,我编写脚本来打开视图,查找指定的文档并使用查找到的UNID来初始化数据源。 我认为这不是最佳解决方案 问题:是否有更好的方法基于键值初始化文档数据源 示例代码: @DbLookup("", "view", "key", 1, '[RETURNDOCUMENTUNIQUEID]'); 您应该看看Tims关于将字符串转换为MD2的文章。 这样,我认为您可以将字符串
@DbLookup("", "view", "key", 1, '[RETURNDOCUMENTUNIQUEID]');
您应该看看Tims关于将字符串转换为MD2的文章。 这样,我认为您可以将字符串id转换为unid,并使用getDocumentByUnid访问它们
在视图中按键查找文档的UNID可能确实是最好的方法。但是,通过编写一个托管bean作为缓存,可以稍微加快重复调用的速度。例如,如果您编写了一个实现Java.util.Map的Java类,去掉了大多数方法,并实现了一个以键为参数的.get(…)方法,那么您可以像这样引用它(假设您将bean称为“DocKeyManager”):
这样,您就可以缓存.get(…)调用中的值,而不必每次都访问数据库,而且它还可以让您在以后更改查找算法。我们经常这样做,但只需记住执行一次查找(通过$tag加载页面),而不是动态(#tag) 如果你这样做的话,它最终会进行多次查找
Jesse Gallagher提出的缓存查找结果的建议也是一个好主意。读起来非常有趣,但它需要将文档的UNID更改为explicit value=MD2(key)——这意味着我们可以存储UNID而不是key。此外:不使用UNID引用的原因是,在某些情况下(已解决的冲突、复制/粘贴),它可以更改,甚至MD2方法也可能导致数据完整性丢失。