Я очень новичок в Liferay, я создал настраиваемое поле страницы , используя «панель управления> конфигурация> настраиваемые поля> страница». Моя цель - извлечь значение из настраиваемого поля страницы и отобразить значение в моем настраиваемом портлете. Один из методов, которые я попробовал, - это использование API ExpandoValue / get-data из веб-службы liferay json, и этот API создается из localhost: 8080 / api / jsonws. Ниже представлен сгенерированный javascript API:
Liferay.Service(
'/expandovalue/get-data',
{
companyId: themeDisplay.getCompanyId(),
className: 'com.liferay.portal.model.Page',
tableName: 'CUSTOM_FIELDS',
columnNames: 'pageDetail',
classPK: themeDisplay.getUserId()
},
function(obj) {
console.log(obj);
}
);
Однако этот API выдает ошибку: java.lang.NullPointerException . Я думаю, что эта ошибка возникает из-за разрешения, предоставленного пользовательскому полю. Итак, я поставил галочку для прав на просмотр и обновление гостя. Но проблема остается.
У меня вопрос, что вызвало эту ошибку и как ее исправить, и есть ли какое-либо другое решение, которое я могу использовать для получения значения из пользовательского поля страницы?
Заранее спасибо.
Редактировать
У меня возникло недоразумение при назначении атрибутов для API, и вот новый API, предложенный Олафом.
Liferay.Service(
'/expandovalue/get-data',
{
companyId: 20115,
className: 'com.liferay.portal.kernel.model.Layout',
tableName: 'CUSTOM_FIELDS',
columnName: 'details',
classPK: themeDisplay.getLayoutId()
},
function(obj) {
console.log(obj);
}
);
Работает нормально. Однако он принял только значение по умолчанию, но не значение, назначенное для этих конкретных страниц.