Magnolia CMS:调用函数“cmsfn:linkForWorkspace”时出现问题

Posted

技术标签:

【中文标题】Magnolia CMS:调用函数“cmsfn:linkForWorkspace”时出现问题【英文标题】:Magnolia CMS: Problems calling function 'cmsfn:linkForWorkspace' 【发布时间】:2013-05-28 08:54:18 【问题描述】:

我正在运行两个 Magnolia 环境(一个用于测试,一个用于生产,都是 4.5.2 CE)。现在在我的测试安装中,我的脚本运行良好。在另一个(生产性)环境中,即使我从良好的工作测试环境中复制了所有内容,我也会遇到模板错误。

我的脚本:

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
<%@ taglib prefix="cmsfn" uri="http://magnolia-cms.com/taglib/templating-components/cmsfn" %>

<c:set var="imageLink1" value="$cmsfn:linkForWorkspace(content.image1,content.image1DmsUUID)"/>
<c:if test="$cmsfn:isPublicInstance()">
    <c:set var="imageLink1" value="$fn:replace(imageLink1, 'magnoliaPublic', 'content')" />
</c:if>

以下是仅在生产系统上失败的原因(来自 catalina.out): http://pastebin.com/ANtEjBCW

你看,错误是“调用函数'cmsfn:linkForWorkspace'的问题”。但是为什么它在测试系统上工作呢?

【问题讨论】:

【参考方案1】:
Caused by: javax.jcr.NoSuchWorkspaceException:

这给了你线索。 content.image1 中的任何内容很可能在您的 prod 环境中不包含有效的工作区名称,而在您的测试环境中包含。基本上我认为是数据问题,而不是脚本问题。

【讨论】:

你好,一月!感谢您的回答;)正如您所建议的工作区可能有问题,我打印了 content.image1content.image1DmsUUID 以查看是否返回“dms “就像在我的测试环境中一样。我愿意!所以不知何故,它没有找到“dms”工作区,对吗? 是的,没错,您的 prod 系统中的数据缺少“工作区”名称。我不确定您是如何创建数据的,但您似乎使用了 DAMHandler。如果您没有更改默认配置,那么用户可以在 DMS 和上传之间进行选择,因此很有可能在您的测试环境中,您有链接到 DMS 的图像,在您的产品环境中,用户选择更改图片并手动上传了一些。您应该检查产品数据到底是什么。

以上是关于Magnolia CMS:调用函数“cmsfn:linkForWorkspace”时出现问题的主要内容,如果未能解决你的问题,请参考以下文章

Magnolia CMS:如何配置代理和绕过

Magnolia CMS : 介绍 Magnolia 教程不适用于 Magnolia CE 和 EE

将 Magnolia CMS 加密密码迁移到 Joomla CMS?

Magnolia CMS - 集成第三方系统

VirtualUriMapping 不起作用 - Magnolia CMS

Magnolia CMS - 用于创建模板的模块创建技术