Liferay 7.4自定义片段中Freemarker代码未解析仅显示为HTML求助
Liferay 7.4自定义片段Freemarker代码未被处理的解决方法
检查片段类型
- 创建自定义片段时,必须选择Freemarker类型,而非HTML类型。选HTML的话,系统会直接把代码当文本渲染,不会解析Freemarker语法。
验证Freemarker语法
- 排查代码是否有语法错误,比如未闭合的指令标签:
错误示例:<#if user.loggedIn>欢迎回来</if>
正确示例:<#if user.loggedIn>欢迎回来</#if> - 变量引用要加默认值避免报错,比如
${user.name!""},防止变量为空时导致解析失败。
确认变量上下文可用性
- 确保你用的Freemarker变量在当前片段的上下文里能访问到,比如页面片段无法直接使用某些Portlet专属变量,要匹配变量的作用域。
确认片段发布状态
- 必须把片段发布到生产环境,不能只存为草稿。在编辑器里点击“发布”,确认状态显示为“已发布”,草稿状态的片段可能不会正常解析代码。
清理缓存并刷新
- 进入Liferay控制面板→服务器管理→缓存,点击“清除全部缓存”。
- 强制刷新浏览器页面,避免浏览器缓存了旧的未解析内容。
检查代码包装方式
- 不要用额外HTML标签包裹Freemarker代码,直接编写逻辑即可,比如直接写:
系统会自动处理后渲染成HTML。<#assign greeting = "Hello World"> <p>${greeting}</p>
内容的提问来源于stack exchange,提问作者user2170680
相关产品推荐
相关产品推荐

