2

主に VB.NET プログラマーである私は、VTL (Velocity Template Language) を初めて使用します。現在、Velocity テンプレートと Jython を使用するアプリケーションをカスタマイズしようとしています。

既存のファイルに次の VTL コードがあります。このコードは、JSON ファイルからいくつかのキーと値のペアを取得し、きれいなテーブルでブラウザーに出力します。

<table class="meta">
    #set($keySet = $metadata.getJsonObject().keySet())
    #foreach($key in $keySet)
    <tr>
        <th width="25%">$parent.getFriendlyName($key)</th>
        <td>
            #set($valueList = $metadata.getList($key))
            #if($valueList.size() > 1)
                #foreach($value in $valueList)
                    <span class="meta-value">$self.escape($value)</span><br/>
                #end
            #else
                $self.escape($valueList.get(0))
            #end
        </td>
    </tr>
    #end
</table>

$keySet 配列を表示できます。

[field1, field2, field3, field4]

私がやろうとしているのは、$keySet 配列の文字列をアルファベット順にソートすることです。

変更してSortTool(http://velocity.apache.org/tools/devel/javadoc/org/apache/velocity/tools/generic/SortTool.html)を使用しようとしました

#foreach($key in $metadata.getJsonObject().keySet())

#foreach($key in $sorter.sort($metadata.getJsonObject().keySet()))

しかし、sort() 関数によって返される配列は空です。

また、子フィールドでソートしようとしていないため、 http://www.liferay.com/community/forums/-/message_boards/message/11146823に記載されているソリューションが適用できるとは思いませんでした。

アドバイスをいただければ幸いです。前もって感謝します。

4

1 に答える 1