播放框架:对crud表字段进行排序

时间:2011-09-22 09:40:54

标签: java playframework

如何将排序顺序设置为DESC默认值?这种方式并没有真正做任何事情,只是使postsAt成为唯一的可排序项目:

<div id="crudListTable">
    #{crud.table fields:['title', 'postedAt'], sort:['postedAt']}
        #{crud.custom 'postedAt'}
            ${object.postedAt.format("dd-MM-yyyy")}
        #{/crud.custom}
    #{/crud.table}
</div>

3 个答案:

答案 0 :(得分:4)

如果您愿意,可以在实体上执行此操作:

@Entity 
public class Course {
   ...
   @ManyToMany
   @OrderBy("lastname ASC")
   public List<Student> students;
   ...
}

答案 1 :(得分:0)

您可以尝试将order属性设置为DESC吗?

#{crud.table fields:['title', 'postedAt'], sort:['postedAt'], order: 'DESC'}
    ...
#{/crud.table}

答案 2 :(得分:0)

这是我的黑客:

您要做的第一件事是在要排序的类上实现Comparable,并进一步创建compareTo方法。

接下来,在项目中输入crud模块。在app / views / tags.crud中,您将找到一个名为relationField.html的文件,该文件处理用于添加关系的字段。该文件分为两部分,一部分用于创建具有multiple = true的选择框,另一部分用于创建下拉选择框。如果你想要这两个分类,你必须在这两种情况下进行编辑。

%{ _field.choices.each() { }替换%{ _field.choices.sort().each() { }%(基本上添加groovy语法来排序集合),输入字段将被排序。

Java类的完整示例:

引用类:

@Entity public class Book extends Model {

@Required
public String title;

@Required
@ManyToMany(cascade=CascadeType.PERSIST)
public List<Author> authors;

@Required
@ManyToOne
public Publisher publisher;

//omitted

@Required public String title; @Required @ManyToMany(cascade=CascadeType.PERSIST) public List<Author> authors; @Required @ManyToOne public Publisher publisher; //omitted

参考类:

}

public class Author extends Model implements Comparable {

@Required
public String firstName;
@Required
public String lastName;

public int compareTo(final Author otherAuthor) {
    if (this.lastName.equals(otherAuthor.lastName)) {
        if (this.firstName.equals(otherAuthor.firstName)) {
            return 0;
        } else {
            return this.firstName.compareTo(otherAuthor.firstName);
        }
    } else {
        return this.lastName.compareTo(otherAuthor.lastName);
    }
}
//omitted

此结构与relationField.html上的hack进行比较将使选择中的可能性显示为已排序。