如果您将其从 Velocity 移植到 Freemarker并从serviceLocator
一组受限变量(控制面板 -> 配置 -> 系统设置 -> 模板引擎 -> Freemarker)中删除, Pratiks 的答案应该可以工作:
<#assign
releaseLocalService = serviceLocator.findService("com.liferay.portal.service.ReleaseLocalService")
release = releaseLocalService.getRelease(1)
vers = release.getBuildNumber()
/>
<span class="simpleVersion">${vers}</span>
如果您不想允许任何有权编辑 Liferay 实例上的模板的人基本上加载任何服务,因此也加载服务器上的任何数据(因为如果您使 serviceLocator 不受限制,它甚至可以在页面片段模板)...好吧,那么您将需要使用以下方法注入您需要的变量TemplateContextContributor
:只需创建一个新的 Liferay Module,选择“template-context-contributor”作为要从中派生的项目模板,然后将其主类编辑为按照下面的代码。此外,您需要自己编写MyHelper
类(在同一个模块中)并用@Component(immediate = true, service = MyHelper.class)
.
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;
}
部署该模块后,您的 Liferay 实例中的所有 Freemarker 模板都应具有变量myHelper
,以及您在类中添加的所有公共方法MyHelper
——其中一个可以返回您需要的修订号。