gpt4 book ai didi

java - 检查给定 UUID 的节点是否存在

转载 作者:行者123 更新时间:2023-12-02 03:13:26 26 4
gpt4 key购买 nike

最佳答案

(请参阅下面我的更新,了解使用标准 Magnolia 指令的简单解决方案)

如何使用搜索searchfn

https://documentation.magnolia-cms.com/display/DOCS/searchfn

QueryUtil

https://nexus.magnolia-cms.com/content/sites/magnolia.public.sites/ref/5.4/apidocs/info/magnolia/cms/util/QueryUtil.html

并按 UUID 搜索:

https://wiki.magnolia-cms.com/display/WIKI/JCR+Query+Cheat+Sheet

SELECT * FROM [nt:base] WHERE [jcr:uuid] = '7fd401be-cada-4634-93fa-88069f46297b'
<小时/>

在 Freemarker 中使用它:

您可以将每个 Java 函数(例如搜索)包装在自定义 freemarker 指令中。

参见documentation.magnolia-cms.com/display/DOCS/Templating+functions

在你的模块 xml 中:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE module SYSTEM "module.dtd" >
<module>
...
<components>
<id>main</id>
<component>
<type>com.company.my.MyTemplatingFunctions</type>
<implementation>com.company.my.MyTemplatingFunctions</implementation>
<scope>singleton</scope>
</component>
</components>
...

com.company.my.MyTemplatedFunctions.doesNodeExist() 调用 QueryUtil 标准类 - 或 SessionUtil,例如:

package com.company.my;

public class MyTemplatingFunctions {
public boolean doesNodeExist(String workspace, String id){
if ( SessionUtil.getNodeByIdentifier(workspace, id) != null ){
return true;
}
return false;
}
}

然后在您的.ftl中:

[#-- @ftlvariable name="myfn" type="com.company.my.MyTemplatingFunctions" --]
${myfn.doesNodeExist(relevantWorkspace, someUUID)}
<小时/>

==更新==

只需检查 Magnolia 文档:

https://documentation.magnolia-cms.com/display/DOCS/damfn#damfn-Getasset

这不起作用吗?

[#assign myAsset = damfn.getAsset("jcr:20d6e4e3-fe53-4b23-8d64-6e67a1c1667f")!]

然后您可以在 Freemarker 中使用 if/else 检查 myAsset 吗?

这看起来是最简单的解决方案。尚未测试过,但看起来应该可以将 UUID 与 jcr: 前缀一起传递。

此外:如果您不需要显式检查 Assets 是否存在,只是不想在日志中收到模板错误,您可以添加一个 ! ,如下所示:

${damfn.getAssetLink(<someUUID>)!}

那么您就不会收到模板错误,只会在日志中收到一条警告消息。

关于java - 检查给定 UUID 的节点是否存在,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40720134/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com