2015-05-07 6 views
0

В настоящее время я работаю с liferay 6.2, но у меня возникают проблемы с созданием шаблона отображения для динамического списка данных. Я стараюсь следовать этому руководству:Создание шаблона Velocity для динамического списка данных (Liferay 6.2)

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

Но пример FreeMarker не работает. Я пытаюсь создать шаблон в Velocity (так как я больше knoledge чем 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 

, но я не могу получить что-нибудь от $ записей

ответ

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> 
+0

В моем портале.properties уже есть строка «freemarker.engine.restricted.variables = serviceLocator». Я попробовал шаблон кода, который вы sugest, но он тоже не работает, он дает мне ошибку, когда дело доходит до чтения «locator службы» – Matias

+0

Да, потому что после знака «=» ничего не должно быть, и у вас все еще есть слово «servicelocator» ' –

+0

И вы должны сделать то же самое для скорости, если вы все еще хотите использовать его, установите «velocity.engine.restricted.variables =» –

Смежные вопросы