Liferay CE配置外部REST服务数据提供者无法填充选项列表求助
Liferay CE 表单数据提供者填充选项列表失败解决方案
基础逻辑说明
表单数据提供者的请求由Liferay服务端发起,而非前端浏览器发起,因此在Chrome开发者工具Network标签中看不到对应第三方接口请求属于正常现象,无需排查该点。
修复步骤
1. 替换可用的REST接口地址
原restcountries.eu域名已停止服务,替换为官方最新可用接口:https://restcountries.com/v3.1/all?fields=name
该接口返回结构为数组,每个元素的通用国家名称存放在name.common字段下。
2. 调整数据提供者配置
进入「表单」-「数据提供者」页面,编辑已创建的提供者:
- 清空所有输入参数配置:当前调用的接口无需传参,多余的入参会导致Liferay判定参数缺失,不发起服务端请求
- 输出参数按如下规则配置:
- 标签:国家名称
- 路径:
[*].name.common([*]代表遍历响应数组,匹配所有元素的name.common字段) - 类型:文本
- 保存后点击页面的「测试」按钮,确认可正常返回国家名称列表。
3. 配置数据提供者公开访问权限
默认新建的数据提供者仅创建者账号有权限访问,匿名用户访问表单时无法拉取数据:
- 点击数据提供者右侧的「权限」按钮
- 找到
Guest角色,勾选「查看」权限后保存。
4. 重新绑定表单选项列表
进入表单编辑页面:
- 选中选项列表组件,重新选择修改后的数据提供者
- 确认“标签字段”和“值字段”均选择配置完成的「国家名称」输出参数
- 保存表单,重新发布页面即可正常加载选项。
异常排查方式
如果配置完成后仍不生效,可登录Liferay后台进入「控制面板」-「服务器管理」-「日志级别」,添加com.liferay.dynamic.data.mapping.data.provider类的日志级别为DEBUG,重新加载表单页面后查看后台日志定位具体报错。
内容的提问来源于stack exchange,提问作者tm1701
相关产品推荐
相关产品推荐

