GXT, как отобразить объект дерева в XTemplate? - PullRequest
0 голосов
/ 07 апреля 2020

У меня следующая проблема: я отображаю данные моего GXT-проекта в сложном XTemplate.

@XTemplate(source = "DepictionDisplay.html")
    SafeHtml displayoben(String shortName, String inventoryNumber, String cave, String wall, String expedition, String vendor, String purchaseDate, String currentLocation, String stateOfPreservation, SafeUri imageUri, SafeUri fullImageUri,
            SafeUri realCaveSketchUri, double width, double height, String style, String modeOfRepresentation, String description, String generalRemarks, String otherSuggestedIdentifications); 

Соответствующая часть DepictionDisplay. html:

            <table class="data-view">
                <tpl if="inventoryNumber != &quot;&quot;">
                <tr style="border-bottom: 1px solid black">
                        <td class="data-view-left"><i>Inventory No.</i></td>
                        <td class="data-view-right">{inventoryNumber}</td>
                </tr>
                </tpl>
                <tpl if="cave != &quot;&quot;">
                <tr style="border-bottom: 1px solid black">
                        <td class="data-view-left"><i>Located in Cave</i></td>
                        <td class="data-view-right">{cave}</td>

                </tr>
                </tpl>
                <tpl if="wall != &quot;&quot;">
                <tr style="border-bottom: 1px solid black">
                        <td class="data-view-left"><i>Position in cave</i></td>
                        <td class="data-view-right">{wall}</td>
                </tr>
                </tpl>
                <tpl if="expedition != &quot;&quot;">
                <tr style="border-bottom: 1px solid black">
                        <td class="data-view-left"><i>Acquired by expedition</i></td>
                        <td class="data-view-right">{expedition}</td>
                </tr>
                </tpl>
                <tpl if="vendor != &quot;&quot;">
                <tr style="border-bottom: 1px solid black">
                        <td class="data-view-left"><i>Vendor</i></td>
                        <td class="data-view-right">{vendor}</td>
                </tr>
                </tpl>
                <tpl if="purchaseDate != &quot;&quot;">
                <tr style="border-bottom: 1px solid black">
                        <td class="data-view-left"><i>Purchase Date</i></td>
                        <td class="data-view-right">{purchaseDate}</td>
                </tr>
                </tpl>
                <tpl if="currentLocation != &quot;&quot;">
                <tr style="border-bottom: 1px solid black">
                        <td class="data-view-left"><i>Current location</i></td>
                        <td class="data-view-right">{currentLocation}</td>
                </tr>
                </tpl>
                <tpl if="stateOfPreservation != &quot;&quot;">
                <tr style="border-bottom: 1px solid black">
                        <td class="data-view-left"><i>State of preservation</i></td>
                        <td class="data-view-right">{stateOfPreservation}</td>
                </tr>
                </tpl>
                <tpl if="style != &quot;&quot;">
                <tr style="border-bottom: 1px solid black">
                        <td class="data-view-left"><i>Style</i></td>
                        <td class="data-view-right">{style}</td>
                </tr>
                </tpl>
                <tpl if="modeOfRepresentation != &quot;&quot;">
                <tr style="border-bottom: 1px solid black">
                        <td class="data-view-left"><i>Mode of representation</i></td>
                        <td class="data-view-right">{modeOfRepresentation}</td>
                </tr>
                </tpl>
        </table>

Проблема в том, что в последнее время мне пришлось изменить прежнее значение String wall на дерево-объект. Записи в объекте дерева имеют функцию getchildren () для навигации вниз и функцию getText () для доступа к значению String, которое должно отображаться.

Теперь у меня вопрос: как отобразить дерево -Объект в этой таблице? До сих пор я не нашел подходящего варианта, поскольку дерево может иметь изменяющуюся глубину.

Любые идеи более ценны.

С уважением,

Эрик

1 Ответ

0 голосов
/ 07 апреля 2020

XTemplates могут принимать SafeHtml параметров и вставлять этот контент, а также поддерживать вызов простых функций форматирования, но не могут рекурсивно вызывать себя или другие функции.

Рассмотрите возможность итерации по этому getChildren() и добавления каждого из их отрендеренных шаблонов к SafeHtmlBuilder, а затем передайте получившуюся строку Safe Html родительскому элементу. Затем ваш собственный код выполняет рекурсию, вставляя меньшие биты контента в большие.

...