我正在使用freemarker模板显示资产发布者列出的网页内容。
在模板中我试图分配portlet-namespace以便使用某些资产功能(比如打印条目)
<#attempt>
<#assign namespace = request["portlet-namespace"]>
<#recover>
<#assign namespace = 'undefined'>
</#attempt>
因此,打印按钮位于
下方<a href="javascript:${namespace}printPage_0();" title='Print'>
printPage
是asset_print.jspf
嗯,一切正常:在浏览器中检查页面时,我验证了命名空间已经计算并分配给命名空间变量(并且UI中没有显示错误)。但是,每当用户尝试从资产发布者那里查看整个Web内容(即点击阅读更多内容)时,liferay门户就会记录以下内容
Expression request["portlet-namespace"] is undefined on line
有人见过这个问题吗?有另一种方法可以在freemarker模板中获取portlet命名空间吗?
答案 0 :(得分:1)
#attempt
/ #recover
不是用于从正常情况中恢复,并且默认情况下它会在错误恢复时记录错误(以便提醒操作员)。您应该使用exp!default
运算符:
<#assign namespace = request["portlet-namespace"]!'undefined'>
(虽然我不确定为什么打印undefinedprintPage_0();
有意义,但这是一个不同的问题。)