访问Freemarker模板中的portlet命名空间

时间:2017-11-30 10:25:47

标签: liferay liferay-6 freemarker

我正在使用freemarker模板显示资产发布者列出的网页内容。

在模板中我试图分配portlet-namespace以便使用某些资产功能(比如打印条目)

<#attempt>
  <#assign namespace = request["portlet-namespace"]>
  <#recover>
  <#assign namespace = 'undefined'>
</#attempt>

因此,打印按钮位于

下方
<a href="javascript:${namespace}printPage_0();" title='Print'>

printPageasset_print.jspf

中liferay资产发布商代码中使用的方法

嗯,一切正常:在浏览器中检查页面时,我验证了命名空间已经计算并分配给命名空间变量(并且UI中没有显示错误)。但是,每当用户尝试从资产发布者那里查看整个Web内容(即点击阅读更多内容)时,liferay门户就会记录以下内容

Expression request["portlet-namespace"] is undefined on line

有人见过这个问题吗?有另一种方法可以在freemarker模板中获取portlet命名空间吗?

1 个答案:

答案 0 :(得分:1)

#attempt / #recover不是用于从正常情况中恢复,并且默认情况下它会在错误恢复时记录错误(以便提醒操作员)。您应该使用exp!default运算符:

<#assign namespace = request["portlet-namespace"]!'undefined'>

(虽然我不确定为什么打印undefinedprintPage_0();有意义,但这是一个不同的问题。)

相关问题