Почему объекты Liferay не отображаются в моем шаблоне Velocity?

Простой пример:

/* Get user roles */
#set($userId=$request.attributes.get('USER_ID'))
#set($roleLocalService=$serviceLocator.findService("com.liferay.portal.service.RoleLocalService"))
$roleLocalService.getUserRoles($userId)

На странице отображается только текст без данных.

$roleLocalService.getUserRoles($userId)

Что мне не хватает?


person mmcglynn    schedule 21.01.2016    source источник


Ответы (1)


  1. Убедитесь, что вам разрешено использовать serviceLocator. значение по умолчанию в portal.properties есть velocity.engine.restricted.variables=serviceLocator, что означает, что serviceLocator недоступно для шаблонов. Установите его на «пусто» (или, по крайней мере, не включайте serviceLocator). Например, установите его

velocity.engine.restricted.variables=

в файле portal-ext.properties в домашнем каталоге Liferay.

  1. $request.attributes.get даст вам строковое значение userId. Итак, вам нужно преобразовать это в Long, используя что-то вроде:

$roleLocalService.getUserRoles($getterUtil.getLong($userId))

person James    schedule 21.01.2016