getSiblings()和sort_by错误

时间:2016-08-15 11:25:37

标签: sorting liferay freemarker

我在Liferay中使用结构(XML)和模板(FTL)。

我的问题是我无法使用sort_by()getSiblings()一起使用。

此代码不起作用,例如:

<ul id="emedia-categories">
  <#list category?sort_by('linktext').getSiblings() as cat>
    <li>
      <a href="${cat.path.getData()}" title="${cat.title.getData()}">
        <h3>
          ${cat.linktext.getData()}
        </h3>
        <img src="${cat.image.getData()}" alt="image-alt">
      </a>
    </li>
  </#list>
</ul>

我得到的错误如下:

Expected sequence. category evaluated instead to com.liferay.portal.freemarker.LiferayTemplateModel on line 2, column 16 in 14868#14904#131571.

我想要实现的是遍历所有数据,并且在执行此操作时,我希望它在每个cat.linktext内的字符串上排序。结果如下:A,B,C,D,E ...

而不是:D,B,E,A,C ......

这是我唯一的工作变体,但它在linktext上没有任何排序,只是按照输入的顺序循环数据(可能是id):

<ul id="emedia-categories">
  <#list category.getSiblings() as cat>
    <li>
      <a href="${cat.path.getData()}" title="${cat.title.getData()}">
        <h3>
          ${cat.linktext.getData()}
        </h3>
        <img src="${cat.image.getData()}" alt="image-alt">
      </a>
    </li>
  </#list>
</ul>

1 个答案:

答案 0 :(得分:1)

错误消息非常明确:您尝试对类别进行排序,该类别不是序列(=列表或数组)。

希望按属性linktext.data对兄弟姐妹进行排序,这是一个序列(=列表):

<#list category.siblings?sort_by(['linktext', 'data']) as cat>
 ...
<#/list>