当前位置: 首页 > 知识库问答 >
问题:

在VTL中对字符串数组进行排序

梁鸿风
2023-03-14

我主要是一个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中列出的解决方案适用,因为我不试图对子字段进行排序。

如有任何建议,将不胜感激。提前谢了。

共有1个答案

司马自明
2023-03-14

首先要检查的是,您是否使用如下代码将sorttool添加到velocity上下文中:

VelocityContext velocityContext = new VelocityContext();
velocityContext.put("sorter", new SortTool());

话虽如此,最佳实践是在Java代码中完成此类工作,而不是在模板逻辑中。更多细节和原因见我在这里的答案。

 类似资料:
  • 问题内容: 允许用户使用字符串数组进行演奏。他们可以将字符串添加到数组中,从数组中删除字符串,在数组中搜索字符串,最终他们将能够对数组进行排序。排序使我很困惑。我尝试了几种不同的方法。第一种方法是将数组转换为ArrayList并使用Collections对ArrayList进行排序,然后将其转换回静态类数组。没用 我尝试的第二种方法是遍历数组,并尝试仅对用户添加的字符串进行排序,而不是对数组中的所

  • 问题内容: 我有一个包含多个数组的数组,我想根据这些数组中的某个字符串对数组进行排序。 如何按名称排序,以便 阿尔伯特排 在首位, 齐默尔曼排 在最后? 我知道如果可以使用整数进行排序,但是字符串使我毫无头绪,该怎么办。 谢谢您帮忙!:) 问题答案: 这可以通过将支持函数作为参数传递给方法调用来实现。 像这样:

  • 本文向大家介绍Swift对字符串数组进行排序,包括了Swift对字符串数组进行排序的使用技巧和注意事项,需要的朋友参考一下 例子 3.0 最简单的方法是使用sorted(): 或者 sort() 您可以将闭包作为排序参数: 尾随闭包的替代语法: 但是,如果数组中的元素不一致,则会出现意外结果: 要解决此问题,请对元素的小写版本进行排序: 或者import Foundation使用NSString的

  • 问题内容: 我有一个字符串arraylist’names’。其中包含人员名称。我想按字母顺序对arraylist进行排序。请帮助我 问题答案: 这将解决您的问题… 要对ArrayList对象进行排序,请使用方法。这是一种静态方法。它将ArrayList对象的元素按升序排序。 万一下面的代码在注释中不起作用,请尝试以下代码。 创建一个自定义比较器类: 然后按您的排序:

  • 问题内容: 我有这样的txt文件中的数据列表 我的任务是按照每个标准对这些数据进行排序,例如)按日期,纬度和经度排序 我尝试像这样的泡沫排序 这可行,但是需要太多时间 那里有在txt文件数据 有没有其他方法可以对这些数据进行排序? 问题答案: 我可能会破坏一些学生的家庭作业,但是这里… 正如课题所建议的那样,Java的自然方法是创建一个表示您的数据的类。然后实现一个将传递给实用方法的方法。 在运行

  • 问题内容: 我currentyl不知道如何对包含PHP中UTF-8编码字符串的数组进行排序。该数组来自LDAP服务器,因此通过数据库排序(不会有问题)不是解决方案。以下内容不适用于我的Windows开发计算机(尽管我认为这至少应该是一个可能的解决方案): 输出为: 这是完全废话。使用1252作为的代码页会提供另一种输出,但仍然是一个明显错误的输出: 有没有一种方法可以对具有UTF-8字符串语言环境