Ответ Pratiks должен работать , если вы портируете его из Velocity на Freemarker и удалите serviceLocator
из набора ограниченных переменных (Панель управления -> Конфигурация -> Системные настройки -> Шаблонные движки -> Freemarker):
<#assign
releaseLocalService = serviceLocator.findService("com.liferay.portal.service.ReleaseLocalService")
release = releaseLocalService.getRelease(1)
vers = release.getBuildNumber()
/>
<span class="simpleVersion">${vers}</span>
Если вы не хотите go маршрут, позволяющий кому-либо с разрешениями редактирования шаблонов на вашем экземпляре Liferay в основном загружать любой service и, следовательно, любые данные на сервере (потому что, если вы сделаете serviceLocator неограниченным, он будет доступен даже в шаблонах фрагментов страницы) ... ну, тогда вам нужно будет ввести нужные переменные, используя a TemplateContextContributor
: Просто создайте новый модуль Liferay , выбрав «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;
}
После развертывания этого модуля все шаблоны Freemarker в вашем экземпляре Liferay должна иметь переменную myHelper
со всеми методами publi c, которые вы добавляете в класс MyHelper
- один из них может вернуть нужный номер ревизии.