Сортировать по вложенному значению поля в FTL liferay

Моя структура, созданная в liferay, выглядит так:

{
    "availableLanguageIds": [
        "en_US"
    ],
    "defaultLanguageId": "en_US",
    "fields": [
        {
            "label": {
                "en_US": "Image"
            },
            "predefinedValue": {
                "en_US": ""
            },
            "style": {
                "en_US": ""
            },
            "tip": {
                "en_US": "Upload the image to be displayed in the Small Banner"
            },
            "dataType": "image",
            "fieldNamespace": "ddm",
            "indexType": "keyword",
            "localizable": true,
            "name": "smallImage",
            "readOnly": false,
            "repeatable": true,
            "required": true,
            "showLabel": true,
            "type": "ddm-image",
            "nestedFields": [
                {
                    "label": {
                        "en_US": "Priority of Image"
                    },
                    "predefinedValue": {
                        "en_US": "0"
                    },
                    "style": {
                        "en_US": ""
                    },
                    "tip": {
                        "en_US": "Priority of the uploaded Image. Lower the number, higher the priority."
                    },
                    "dataType": "integer",
                    "fieldNamespace": "ddm",
                    "indexType": "keyword",
                    "localizable": true,
                    "name": "imagePriority",
                    "readOnly": false,
                    "repeatable": false,
                    "required": true,
                    "showLabel": true,
                    "type": "ddm-integer"
                }
            ]
        }
    ]
}

Теперь в шаблоне я хочу отсортировать его, используя поле приоритета изображения. Мой шаблон, как показано ниже:

<div id="example2" class="slider-pro">
    <div class="sp-slides">
        <#if smallImage.getSiblings()?has_content>
            <#list smallImage.getSiblings()?sort_by(["properties","imagePriority"]) as cur_smallImage>
                <#if cur_smallImage.getData()?? && cur_smallImage.getData() != "">
                    <div class="sp-slide">
                        <img class="sp-image" alt="${cur_smallImage.getAttribute("alt")}" src="${cur_smallImage.getData()}" data-src="${cur_smallImage.getData()}" data-retina="${cur_smallImage.getData()}" />
                    </div>
                </#if>
            </#list>
        </#if>
    </div>
</div>

Я пробовал сортировку как ? Sort_by("cur_smallImage.imagePriority") также по ? Sort_by("imagePriority"), но это не сработало. Я хочу отображать изображения в последовательности с указанным приоритетом.
Пожалуйста помоги.

0 ответов

Если подпеременная, которую вы хотите использовать для сортировки, находится на более глубоком уровне (то есть, если это подпеременная подпеременной и т. Д.), То вы можете использовать последовательность в качестве параметра, который определяет имена под-переменных. которые ведут к желаемой подварианте. Например:

<#assign members = [
    {"name": {"first": "Joe", "last": "Smith"}, "age": 40},
    {"name": {"first": "Fred", "last": "Crooger"}, "age": 35},
    {"name": {"first": "Amanda", "last": "Fox"}, "age": 25}]>

Отсортировано по названию. Последнее:

<#list members?sort_by(['name', 'last']) as m>
- ${m.name.last}, ${m.name.first}: ${m.age} years old
</#list>

взято из: https://freemarker.apache.org/docs/ref_builtins_sequence.html

Другие вопросы по тегам