Liferay 7.4 FTL模板中如何访问结构化数据?原XML方式失效
访问Liferay新版JSON格式的JournalArticle结构化字段
在Liferay迁移到JSON存储后,原XML解析方式已失效,可通过以下两种方式获取title和subtitle字段:
方法1:手动解析JSON内容
- 将文章内容转换为
JSONObject:
JournalArticle journalArticle = assetRenderer.getArticle(); String contentJson = journalArticle.getContent(); JSONObject contentObj = JSONFactoryUtil.createJSONObject(contentJson);
- 根据JSON层级提取字段(以Liferay默认存储结构为例,若为自定义结构,可先打印
contentJson确认路径):
// 从structuredContent的fields节点中取值 JSONObject structuredContent = contentObj.getJSONObject("structuredContent"); JSONObject fields = structuredContent.getJSONObject("fields"); String articleTitle = fields.getString("title"); String articleSubTitle = fields.getString("subtitle");
方法2:使用Liferay内置API
Liferay 7.3及以上版本提供了直接获取字段值的API,无需手动解析JSON:
JournalArticle journalArticle = assetRenderer.getArticle(); // 第一个参数为语言环境,第二个参数为字段名称 String articleTitle = journalArticle.getDisplayValue(Locale.getDefault(), "title"); String articleSubTitle = journalArticle.getDisplayValue(Locale.getDefault(), "subtitle");
调试小技巧
如果不确定JSON结构,可先打印完整内容确认字段层级:
System.out.println("文章JSON内容:" + journalArticle.getContent());
内容的提问来源于stack exchange,提问作者Kujista
相关产品推荐
相关产品推荐

