Поле доступа к странице в Liferay 7.1 Бесплатный шаблон маркера - PullRequest
0 голосов
/ 19 июня 2019

Я установил настраиваемое поле страницы под названием CustomLogo в Liferay 7.1.Я хотел бы получить доступ к его значению в шаблоне бесплатного маркера.После прочтения документации и некоторых постов, связанных с ней, я использовал следующий код для доступа к настраиваемому полю

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

Я установил разрешение на просмотр для настраиваемого поля (для всех ролей пользователя).Я также проверил, правильно ли заданы имена и значения столбцов в базе данных liferay (таблицы раскрытия).Однако я получаю следующую ошибку:

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)

Как я уже говорил выше, я уже установилразрешение просмотра для настраиваемого поля.Я также дважды проверил ключ, опечатки и возможные ошибки, но безуспешно.

Пожалуйста, дайте мне знать, если у вас есть предложения или вещи, которые я пропустил.Спасибо

1 Ответ

1 голос
/ 19 июня 2019

Попробуйте получить мост расширения из макета вместо группы, поэтому

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

должно работать.

...