You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

按Liferay教程创建选择弹窗时,JournalItemSelectorCriterion提示无选择视图

解决JournalItemSelectorCriterion提示"No item selector views found"的问题

我之前在Liferay 7.x开发中也碰到过一模一样的问题,弹窗能打开但显示“Selection is not available”,背后的核心原因是ItemSelector找不到匹配JournalItemSelectorCriterion的视图组件,或者缺少必要的配置/数据。给你几个排查和解决的方向:

1. 确认依赖包是否完整引入

JournalItemSelectorCriterion属于Journal模块的ItemSelector扩展,你需要确保项目的依赖中包含了以下几个关键包(以Gradle为例,Maven同理):

dependencies {
    compileOnly group: "com.liferay", name: "com.liferay.item.selector.api", version: "3.0.0"
    compileOnly group: "com.liferay", name: "com.liferay.journal.api", version: "6.0.0"
    compileOnly group: "com.liferay", name: "com.liferay.journal.item.selector.api", version: "2.0.0"
}

如果缺少com.liferay.journal.item.selector.api,ItemSelector无法识别JournalItemSelectorCriterion对应的视图,就会抛出“No item selector views found”的提示。

2. 给JournalItemSelectorCriterion设置正确的GroupId

Journal文章是绑定到具体站点(Group)的,如果你的JournalItemSelectorCriterion没有指定groupId,ItemSelector不知道该去哪个站点查找文章,自然返回空结果。在创建Criterion的时候一定要传入当前站点的GroupId:

// 获取当前主题显示对象里的站点GroupId
long groupId = themeDisplay.getScopeGroupId();

JournalItemSelectorCriterion journalItemSelectorCriterion = new JournalItemSelectorCriterion();
journalItemSelectorCriterion.setGroupId(groupId);

3. 检查目标站点是否存在Journal文章

这个容易被忽略:如果你的目标站点下还没有创建任何Journal文章,弹窗当然会显示空状态。先去站点内容 > Web内容里创建几篇测试文章,再重新打开弹窗试试。

4. 验证当前用户的权限

当前操作的用户需要有查看Web内容的权限(即com.liferay.journal.model.JournalArticle的VIEW权限)。如果用户没有权限访问任何Journal文章,ItemSelector会过滤掉所有内容,显示“Selection is not available”。

5. 确认ItemSelector的注入和调用是否正确

确保你通过OSGi的@Reference正确注入了ItemSelector实例:

@Reference
private ItemSelector _itemSelector;

调用_itemSelector.getItemSelectorURL()时,参数要正确传递JournalItemSelectorCriterion和当前的PortletRequest/Response。

内容的提问来源于stack exchange,提问作者Victor

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 08:56:07