gpt4 book ai didi

javascript - Liferay 7 : Retrieved custom field value using javascript api jsonws return java. lang.NullPointerException

转载 作者:行者123 更新时间:2023-12-03 00:27:44 27 4
gpt4 key购买 nike

我对 liferay 非常陌生,我使用“控制面板 > 配置 > 自定义字段 > 页面”创建了一个页面自定义字段。我的目标是从页面自定义字段中检索值并在我的自定义 portlet 中显示该值。我尝试过的方法之一是使用 liferay json Web 服务中的 ExpandoValue/get-data API,该 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 分配属性时存在误解,这是 Olaf 建议的新 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);
}
);

效果很好。然而,它只采用默认值,而不是为特定页面分配的值。

最佳答案

如果我没记错的话,未经身份验证的用户无法使用库存远程 API,但至少需要一个登录用户(当然,除了常规权限之外)。

您可以通过从具有相同权限的登录帐户访问 API 来对此进行测试。如果它在那里有效,那么这就是您遇到的情况。

但是,当我正确解释您问题中的调用时,当前用户 ID 将是您正在查看的自定义字段的主键(查看您的 classPK 值)。对于页面上的自定义字段,我期望有一个页面 id(Liferay-API 术语中的layoutId)。当我看到这个时,我注意到您的代码片段中有 com.liferay.portal.model.Page 。我还没有见过那个类,并且可以在 com.liferay.portal.kernel.model.Layout 中找到页面(假设 Liferay 7.1 )

这让我想知道您在这里想要实现什么 - 您是在寻找特定于用户的字段(这将是用户的自定义字段)还是真正的特定于页面的字段?无论如何 - 因为这是一个答案,而不是评论,它可能会给出足够的提示来尝试并更接近解决方案。

关于javascript - Liferay 7 : Retrieved custom field value using javascript api jsonws return java. lang.NullPointerException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54015903/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com