根据plunker,我们说我有以下示例:
public class UserForm {
public String name;
public List<MyClass> itmes;
}
和
@helper.inputText(userForm("name"))
@helper.repeat(userForm("items"), min = 1) { itemField =>
@helper.inputText(itemField)
}
但是,在MyClass
中,我有compareTo()
的重写实现。我还有一个getter getSortedItems()
,它将以正确的排序顺序返回列表。
目前,使用repeat()
帮助 获取我想要的订单中的商品列表。 有没有办法指定repeat()
助手的排序?或者我可以给它List
作为参数吗?看起来这可以在Scala中完成。
任何帮助将不胜感激,谢谢!
答案 0 :(得分:0)
您可以使用有序集替换List<MyClass>
:
case class MyClass(id: Int, name: String)
val sorted = new mutable.TreeSet[MyClass]()(new Ordering[MyClass] {
def compare(a: MyClass, b: MyClass): Int = {
Ordering.Int.compare(a.id,b.id)
}
})
sorted.add(MyClass(2,"bob"))
sorted.add(MyClass(1,"bill"))
sorted.add(MyClass(3,"jane"))
我假设该列表仅包含MyClass
的唯一实例,因此一个集合应该可以正常工作,每次添加一个项目时,该集合将确保它保持排序。
java版本应该非常接近:
import java.util.Comparator;
import java.util.TreeSet;
public class MyClass {
public int id;
public String name;
}
public class MyClassComparator implements Comparator<MyClass> {
@Override
public int compare(MyClass a, MyClass b) {
return Integer.compare(a.id,b.id);
}
}
TreeSet<MyClass> sorted = new TreeSet<>(new MyClassComparator());