2013-05-28 39 views
0

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

我的脚本:

<%@ 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 env中包含有效的工作区名称,还是在你的测试环境中都有。基本上我认为这是数据问题,而不是脚本问题。

+0

嗨!感谢您的回答;)正如您所建议的那样,工作区可能有问题,我打印出_content.image1_和_content.image1DmsUUID_以查看我是否返回“dms”,就像在我的测试环境中一样。而我呢!所以不知何故,它找不到“dms”工作区,是吗? – user2336287

+0

是的,这是正确的,您的产品系统中的数据缺少“工作区”名称。我不确定你是如何创建你的数据的,但看起来你使用的是DAMHandler。如果您没有更改默认配置,那么用户可以在DMS和Upload之间进行选择,所以在您的测试环境中,您可能有图像链接到DMS,在您的prod env用户选择更改图像并手动上传一些。你应该检查产品数据是什么。 – Jan