当前位置: 首页 > 知识库问答 >
问题:

Liferay 7:使用javascript api jsonws return java检索自定义字段值。lang.NullPointerException

孙玮
2023-03-14

我是新来的,我用控制面板创建了一个页面自定义字段

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);
  }
);

它工作正常。然而,它只取默认值,而不是为特定页面分配的值。

共有1个答案

柳奇思
2023-03-14

如果内存正常,未经身份验证的用户不能使用stock remote API,但至少需要一个登录用户(当然,除了常规权限之外)。

您可以通过从具有相同权限的登录帐户访问API来测试此问题。如果它在那里工作,那么这就是你遇到的。

但是,当我正确解释问题中的调用时,当前用户id将是您正在查看的自定义字段(查看您的classPK值)的主键。对于页面上的自定义字段,我希望有一个页面id(Liferay API术语中的layoutId)。当我看到这一点时,我注意到com。利弗雷。门户。模型在你的代码片段中翻页。我还没有看到这个类,页面可以在com中找到。利弗雷。门户。内核模型布局(假设Liferay 7.1)

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

 类似资料:
  • 在WooCommerce结账页面上,我添加了一个客户必须输入才能结账的额外字段。 我想在woocommerce\u cart\u calculate\u fees操作挂钩中访问此字段的值。 通过使用woocommerce,我尝试了几种方法-

  • 我试图从Firebase Firestore中检索一个字段,并将其放入一个自定义对象中。我成功地从代码上传了自定义对象,没有任何问题,但是当我试图从Firestore读取和访问对象列表时,我一直得到以下错误: SelfMadeQuestion类如下所示: 这就是我试图做的,以便从Firebase中读取自拍问题列表: 由于可以将自定义对象上载到firebase并且工作正常,我想知道是否有任何方法可以

  • 我在修改我安装的WordPress流行帖子插件时遇到了一些问题。 它可以选择从自定义字段获取缩略图,我已将其输入为“image_facebook”。但是缩略图没有显示。 在检查代码时,我发现imgsrc有post id而不是返回图像URL。 我已经把问题缩小到我安装的另一个插件http://wordpress.org/plugins/advanced-custom-fields/ 当它处于活动状态

  • WooCommerce后台的产品检索与前台搜索略有不同。前台是在WordPress默认搜索的基础上修改,后台直接用了一套自己的逻辑,从wc_product_meta_lookup这个表里检索产品,调用函数WC_Product_Data_Store_CPT->search_products(),这个函数只有一个filter——woocommerce_product_pre_search_produc

  • 我已经创建了一个包含多个自定义字段的post类型(使用ACF),现在我需要通过其中一个自定义字段来检索自定义post类型,该字段有一个数组作为meta_值,这是我用来获取自定义post_类型的代码 如果我删除了媒体查询部分,它可以正常工作,但我需要这个过滤器:/I如果我的代码有任何错误?是否有其他选项可以完成此筛选器? 提前谢谢

  • 介绍 model 参考文档已经介绍了如何使用 Django 的标准字段类;例如 CharField, DateField,等等。对于很多应用来说,这些类足够用了。 但是在某些情况下, 你所用的Django 不具备你需要的某些精巧功能,或是你想使用的字段与 Django 自带字段完全不同。 Django 内置的字段类型并不能覆盖所有可能遇到的数据库的列类型,仅仅是些普通的字段类型,例如VARCHAR