我有一个从 BeanItemContainer 扩展的 Container 类。我想向 DATE_CREATED 属性添加一个 ItemSorter 以按降序对值进行排序。
容器类。
public class NoteContainer extends BeanItemContainer<CaseNote> implements Serializable
{
private static final long serialVersionUID = -5926608449530066014L;
public static final String DATE_CREATED = "dateCreated";
public static final String CREATED_BY = "createdBy";
public static final String TEXT = "text";
public static final String ACTION = "Action";
public static final Object[] NATURAL_COL_ORDER = new Object[] {
ACTION, DATE_CREATED, CREATED_BY, TEXT
};
public static final String[] COL_HEADERS_ENGLISH = new String[] {
"ACTION", "Date Created/Updated", "Created/Updated By", "Note"
};
/**
* Default Constructor.
*
*/
public NoteContainer()
{
super(CaseNote.class);
}
}
CaseNote 是一个实体类,其中 DATE_CREATED
为 java.util.Date
格式。
请提供正确的解决方案...
与 Sort vaadin Table 相关
提前致谢。
最佳答案
BeanItemContainer 已经准备好轻松设置 ItemSorter 的一切。 您可以使用此功能:
public void sort(Object[] propertyId, boolean[] ascending)
例如,您可以将 sortByDate() 函数添加到容器中来执行此操作。这里是三个示例类。
bean :
public class CaseNote {
private static final Random R = new Random();
private static final long Y_IN_MILLIES = 1000l * 60l * 60l * 24l * 365l;
private Date dateCreated = new Date(System.currentTimeMillis() - Math.round(R.nextDouble() * Y_IN_MILLIES));
private String text = UUID.randomUUID().toString();
public String getText() {
return text;
}
public Date getDateCreated() {
return dateCreated;
}
}
容器:
public class NoteContainer extends BeanItemContainer<CaseNote> {
public NoteContainer() {
super(CaseNote.class);
}
public void sortByDate() {
sort(new String[] { "dateCreated" }, new boolean[] { false });
}
}
测试用户界面:
public class TestUI extends UI {
@Override
protected void init(VaadinRequest request) {
NoteContainer nc = new NoteContainer();
for (int i = 0; i < 10; i++) {
nc.addItem(new CaseNote());
}
nc.sortByDate();
for (int i = 0; i < 10; i++) {
nc.addItem(new CaseNote());
}
Table t = new Table("MyTable", nc);
setContent(t);
}
}
注意:调用 sortByDate() 函数后添加的项目未排序。如果您希望在每次插入后对项目进行排序,您可以覆盖 addItem() 函数,以便它们在添加项目后调用 sort()。
关于jakarta-ee - 如何在 Vaadin 中将 ItemSorter 添加到表容器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16074056/