【问题标题】:Access portlet namespace in Freemarker template在 Freemarker 模板中访问 portlet 命名空间
【发布时间】:2018-05-14 05:50:38
【问题描述】:

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

在模板中,我尝试分配 portlet 命名空间,以便像这样使用一些资产功能(例如打印条目)

<#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-namespace 吗?

【问题讨论】:

    标签: liferay liferay-6 freemarker


    【解决方案1】:

    #attempt/#recover 不用于从正常情况下恢复,默认情况下会在恢复时记录错误(以便向操作员发出警报)。您应该改用 exp!default 运算符:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-12-29
      • 2011-02-01
      • 1970-01-01
      • 2017-12-21
      • 2014-11-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多