Liferay ADT-来自本地窗体的Freemarker调用函数
我目前正在努力使用Liferay ADT,使用freemarker语言。我想做的很简单。我只想将web内容结构中的布尔字段从true更改为false,反之亦然 通过使用此代码,我实现了以下目标:Liferay ADT-来自本地窗体的Freemarker调用函数,liferay,liferay-6,freemarker,Liferay,Liferay 6,Freemarker,我目前正在努力使用Liferay ADT,使用freemarker语言。我想做的很简单。我只想将web内容结构中的布尔字段从true更改为false,反之亦然 通过使用此代码,我实现了以下目标: <#function expire> <#assign isActiveNode = docXml.selectSingleNode("//dynamic-element[@name='isActive']/dynamic-content") /> <#as
<#function expire>
<#assign isActiveNode = docXml.selectSingleNode("//dynamic-element[@name='isActive']/dynamic-content") />
<#assign journalArticleLocalService = serviceLocator.findService("com.liferay.portlet.journal.service.JournalArticleLocalService")>
<#assign expireArticle = isActiveNode.setText("false") />
<#assign expireArticle = article.setContent(docXml.asXML()) />
<#assign expireArticle = journalArticleLocalService.updateJournalArticle(article) />
</#function>
我知道代码是有效的,因为我在没有使用函数的情况下尝试了它。但我希望整个活动只需点击一个按钮即可触发。所以我想做的是从窗体或按钮调用该函数。我似乎无法做到这一点:
<form action="${expire}" method="post">
<input type="submit" value="Expire" class="btn btn-success"/>
</form>
从ButtonOnClick事件调用它也不会有帮助
它说:
此处应为字符串、日期或数字,表达式应为expire
一个freemarker.core.Macro
那么如何从html标记中调用“expire”函数呢
任何想法都将不胜感激。由于
expire
是一个函数,您应该像${expire()}
那样调用它。但是,您的函数没有返回值(没有),因此也会导致错误。我不确定您希望在该${…}
处插入什么,但是#在#函数的末尾返回它
再三重复使用expireArticle
变量也是毫无意义的;您只需覆盖旧值。此外,对于只需要在函数内部使用的变量,使用
更为简洁