我目前正在使用liferay 6.2,但是我在为动态数据列表创建显示模板时遇到了问题。我试图遵循本指南:
但是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中获得任何内容
答案 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>