Liferay 7.1 免费标记模板中的访问页面自定义字段

Access page custom field in Liferay 7.1 Free marker template

我在Liferay 7.1 中设置了一个名为CustomLogo 的页面自定义字段。我想在免费标记模板中访问它的值。在阅读文档和一些相关的帖子后,我使用以下代码访问自定义字段

<#assign page_custom_field_logo_url = layout.getGroup().getExpandoBridge().getAttribute("CustomLogo") />
<h1>${page_custom_field_logo_url }</h1> 

我已经为自定义字段设置了查看权限(针对所有用户角色)。我还检查了 liferay 数据库(expando 表)中的列名和值是否设置正确。 但是我收到以下错误:

FreeMarker template error: Java method "com.liferay.portlet.expando.model.impl.ExpandoBridgeImpl.getAttribute(String)" threw an exception when invoked on com.liferay.portlet.expando.model.impl.ExpandoBridgeImpl object "com.liferay.portlet.expando.model.impl.ExpandoBridgeImpl@f2864c8"; see cause exception in the Java stack trace. FTL stack trace ("~" means nesting-related):
- Failed at: #assign page_custom_field_logo_url...  [in template "/templates/portal_normal.ftl" at line 75, column 37]

观察堆栈跟踪后,我看到有一个空指针异常,它指出:

Caused by: java.lang.RuntimeException: java.lang.NullPointerException
at com.liferay.portlet.expando.model.impl.ExpandoBridgeImpl.getAttribute(ExpandoBridgeImpl.java:219)
at com.liferay.portlet.expando.model.impl.ExpandoBridgeImpl.getAttribute(ExpandoBridgeImpl.java:199)
Caused by: java.lang.NullPointerException
at com.liferay.portlet.expando.service.permission.ExpandoColumnPermissionImpl.contains(ExpandoColumnPermissionImpl.java:73)
at com.liferay.expando.kernel.service.permission.ExpandoColumnPermissionUtil.contains(ExpandoColumnPermissionUtil.java:58)
at com.liferay.portlet.expando.service.impl.ExpandoValueServiceImpl.getData(ExpandoValueServiceImpl.java:121)
at sun.reflect.GeneratedMethodAccessor1066.invoke(Unknown Source)

如上所述,我已经为自定义字段设置了查看权限。我也仔细检查了密钥、错别字和可能的错误,但没有成功。

如果您有任何建议或我遗漏的事情,请告诉我。谢谢

尝试从布局而不是组中获取 expando 桥,所以

layout.getExpandoBridge().getAttribute("CustomLogo")

应该可以。