Liferay 7 Freemarker Template. staticUtil has evaluated to NULL or missing - Tried to get JournalArticle's Categories

匿名 (未验证) 提交于 2019-12-03 10:09:14

问题:

Hi fellow Liferay'ers,

I'm trying to get the categories of a journalArticle with a Freemarker template.

I tried this code:

<#assign journalArticleId = .vars['reserved-article-id'].data> <#assign journalArticleResourceLocalServiceUtil = staticUtil["com.liferay.portlet.journal.service.JournalArticleResourceLocalServiceUtil"]> <#assign assetCategoryLocalServiceUtil = staticUtil["com.liferay.portlet.asset.service.AssetCategoryLocalServiceUtil"]>  <#assign articleResourcePK = journalArticleResourceLocalServiceUtil.getArticleResourcePrimKey(groupId, journalArticleId)/> <#assign categoryList=assetCategoryLocalServiceUtil.getCategories("com.liferay.portlet.journal.model.JournalArticle",articleResourcePK) >  <#list categoryList as categoryList> ${categoryList.getName()} </#list> 

I also added This lines to the portal-setup-wizzard.properties

freemarker.engine.restricted.classes= freemarker.engine.restricted.variables= freemarker.engine.restricted.packages= 

When i execute the code it throws this error:

08:26:30,582 ERROR [http-nio-8080-exec-10][runtime:60] Error executing FreeMarker template FreeMarker template error: The following has evaluated to null or missing: ==> staticUtil  [in template "20202#20246#41671" at line 14, column 51]  ---- Tip: If the failing expression is known to be legally refer to something that's sometimes null or missing, either specify a default value like myOptionalVar!myDefault, or use <#if myOptionalVar??>when-present<#else>when-missing</#if>. (These only cover the last step of the expression; to cover the whole expression, use parenthesis: (myOptionalVar.foo)!myDefault, (myOptionalVar.foo)?? ----  ---- FTL stack trace ("~" means nesting-related):         - Failed at: #assign journalArticleResourceLocalSe...  [in template "20202#20246#41671" at line 14, column 1] ----  Java stack trace (for programmers): ---- 

Does anyone has an Idea what I am doing wrong here? Thank you in advance.

回答1:

in liferay 7 they have change the setting of freemarker engine now the configurazion is in the control panel

Control Panel -> Configuration -> System Settings -> Foundation -> FreeMarker Engine -> Restricted Variables 

you have to remove here the restrict varibles

The package of object are changed in liferay 7 so the correcti freemarker in this case is

<#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 categoryList=assetCategoryLocalServiceUtil.getCategories("com.liferay.journal.model.JournalArticle",articleResourcePK) >  <#list categoryList as categoryList> ${categoryList.getName()} </#list> 


易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!