使用liferay 7 GA4和freemarker引擎。
我们遇到了freemarker引擎的奇怪行为。
我们有很多使用相同.ftl模板的网页内容。
这是模板的开头:
<#assign journalArticleId = .vars['reserved-article-id'].data>
<#assign journalArticleResourceLocalServiceUtil =
staticUtil["com.liferay.journal.service.JournalArticleResourceLocalServiceUtil"]>
<#assign assetCategoryLocalServiceUtil = staticUtil["com.liferay.asset.kernel.service.AssetCategoryLocalServiceUtil"]>
<#assign articleResourcePK = journalArticleResourceLocalServiceUtil.getArticleResourcePrimKey(groupId, journalArticleId)/>
<#assign categories = assetCategoryLocalServiceUtil.getCategories("com.liferay.journal.model.JournalArticle",articleResourcePK) >
<#list categories as category>
<#if category?is_first>
<#assign categorie = category.getName()>
</#if>
</#list>
<#assign serviceContext = staticUtil["com.liferay.portal.kernel.service.ServiceContextThreadLocal"].getServiceContext()>
<#assign themeDisplay = serviceContext.getThemeDisplay() />
<#assign currentUrl = themeDisplay.getPortalURL() + themeDisplay.getURLCurrent() />
这是错误:
在公共页面上,我们有一个资产发布商列出了所有这些网页内容。
点击其中一个时,一切正常,网页内容正确呈现。
现在,如果我们通过搜索portlet搜索此Web内容,它也会正确呈现。
问题是:如果我们决定在使用资产发布者之前搜索网络内容,则freemarker引擎无法处理该模板。
实际上我们遇到了this类错误。
最好的部分是,在通过搜索获得错误后,您仍无法通过资产发布者显示错误。在这种情况下,一切都终于被打破了。
我真诚地认为我们尝试了关于freemarker引擎的每个解决方案(portal-ext.properties,freemarker允许/限制类等)。
我无法理解为什么如果我们来自可以显示这些网页内容的任何其他页面,它工作正常,但如果我们在strat上搜索它就不会。
谢谢你帮助每个人。
使用模板和错误进行编辑
编辑#2:切换到serviceLocator时出现以下错误:
答案 0 :(得分:0)
您无需staticUtil
来检索DLFileEntryLocalServiceUtil
,请尝试使用serviceLocator
代替:
<#assign DLFileEntryLocalService = serviceLocator.findService("com.liferay.document.library.kernel.service.DLFileEntryLocalService")>
<强> NB。强>
您必须在模板中启用serviceLocator:
转到Control Panel -> Configuration -> System Settings -> Foundation -> FreeMarker Engine -> Restricted Variables
并删除serviceLocator,然后重新启动Liferay。