为动态数据列表创建Velocity模板(Liferay 6.2)

时间:2015-05-07 16:34:41

标签: templates liferay velocity freemarker datalist

我目前正在使用liferay 6.2,但是我在为动态数据列表创建显示模板时遇到了问题。我试图遵循本指南:

https://dev.liferay.com/discover/portal/-/knowledge_base/6-2/make-it-pretty-creating-custom-displays#display-templates

但是FreeMarker的例子并不起作用。我试图在Velocity中创建一个模板(因为我有比FreeMarker更多的知识):

到目前为止我的代码是:

<h1>Title</h1>

#set($DDLRecordLocalService = $serviceLocator.findService("com.liferay.portlet.dynamicdatalists.service.DDLRecordLocalService"))
#set ($records = $DDLRecordLocalService.getRecords("TitoloDeEmprego"))

#if(!$records.isEmpty())
    <h1>$records.getFieldValue("TitoloDeEmprego")</h1>
#end

但我无法从$ records中获得任何内容

1 个答案:

答案 0 :(得分:3)

首先,您必须允许Freemarker / Velocity模板访问 serviceLocator 变量。为此,您需要在 portal-ext.properties 中添加以下行:

# Freemarker template settings
freemarker.engine.restricted.variables=

我认为这是原因,但如果您有任何其他问题,这是一个简单的Freemarker DDL显示模板,对我有用:

<#assign DDLRecordLocalService = serviceLocator.findService("com.liferay.portlet.dynamicdatalists.service.DDLRecordLocalService")>
<#assign records = DDLRecordLocalService.getRecords(reserved_record_set_id)>

<#if records?has_content>
    <ul>
        <#list records as cur_record>
            <li>
                <a href="${ddmUtil.getDisplayFieldValue(themeDisplay, cur_record.getFieldValue("someLinkFieldName", locale), cur_record.getFieldType("someLinkFieldName"))}">
                    <img src="${ddmUtil.getDisplayFieldValue(themeDisplay, cur_record.getFieldValue("someImageFieldName", locale), cur_record.getFieldType("someImageFieldName"))}" />
                </a>
            </li>
        </#list>
    </ul>
</#if>