如何在FreeMarker模板中检查Liferay版本?
我正在为Liferay开发一个主题,我希望同时使用Liferay的7.2版和7.3版。如何检查模板中使用的版本,以便执行以下代码:如何在FreeMarker模板中检查Liferay版本?,liferay,freemarker,liferay-theme,liferay-7.2,liferay-7.3,Liferay,Freemarker,Liferay Theme,Liferay 7.2,Liferay 7.3,我正在为Liferay开发一个主题,我希望同时使用Liferay的7.2版和7.3版。如何检查模板中使用的版本,以便执行以下代码: Liferay 7.3 Liferay 7.2 更新(2008年8月21日): 我已尝试使用assign获取服务(因为set无法在模板中使用),但serviceLocator为null尝试以下操作: set ($releaseLocalService = $serviceLocator.findService("com.liferay.portal.servic
Liferay 7.3
Liferay 7.2
更新(2008年8月21日):我已尝试使用
assign
获取服务(因为set
无法在模板中使用),但serviceLocator
为null
<代码>尝试以下操作:
set ($releaseLocalService = $serviceLocator.findService("com.liferay.portal.service.ReleaseLocalService"))
#set ($release = $releaseLocalService.getRelease(1))
#set ($vers = $release.getBuildNumber())
<span class="simpleVersion">$vers</span>
set($releaseLocalService=$serviceLocator.findService(“com.liferay.portal.service.releaseLocalService”))
#set($release=$releaseLocalService.getRelease(1))
#set($vers=$release.getBuildNumber())
$vers
如果您将其从Velocity移植到Freemarker并从受限变量集中删除serviceLocator
(控制面板->配置->系统设置->模板引擎->Freemarker),Pratiks answer应该可以工作:
部署该模块后,Liferay实例中的所有Freemarker模板都应具有变量
myHelper
,以及您在类myHelper
中添加的所有公共方法--其中一个可以返回您需要的修订号。这似乎对我不起作用,它只显示页面中的文本。您不是想使用$vers
吗@SamWM$vers从未在init_custom.ftl或portal_normal.ftl中设置
<#assign
releaseLocalService = serviceLocator.findService("com.liferay.portal.service.ReleaseLocalService")
release = releaseLocalService.getRelease(1)
vers = release.getBuildNumber()
/>
<span class="simpleVersion">${vers}</span>
package my.own.template.context.contributor;
import com.liferay.portal.kernel.template.TemplateContextContributor;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import org.osgi.service.component.annotations.Component;
import org.osgi.service.component.annotations.Reference;
import my.own.template.object.MyHelper;
@Component(
immediate = true,
property = "type=" + TemplateContextContributor.TYPE_GLOBAL,
service = TemplateContextContributor.class
)
public class MyDisplayTemplateContextContributor
implements TemplateContextContributor {
@Override
public void prepare(Map<String, Object> contextObjects, HttpServletRequest httpServletRequest) {
contextObjects.put("myHelper", _myHelper);
}
@Reference(unbind="-")
MyHelper _myHelper;
}