Вот мой код в ManagedBean:
public List posortujGrupe(Set<Uczestnik> sm) {
List sortedList2 = new ArrayList(sm);
System.out.println("^^^^^^^^^^1");
for(int i = 0 ; i < sortedList2.size() ; i++)
System.out.println("i: "+i+" -> "+((Uczestnik)(sortedList2.get(i))).getStatusUczestnictwa());
System.out.println("^^^^^^^^^^2");
Collections.sort(sortedList2);
return sortedList2;
}
Он должен отсортировать список, отображаемый на странице jsf
Вот мой код в классе Uczestnik:
public class Uczestnik implements java.io.Serializable, Comparable<Uczestnik> {
(...)
private String statusUczestnictwa;
(...)
public Uczestnik(..., String statusUczestnictwa, ...){
(...)
this.statusUczestnictwa = statusUczestnictwa;
(...)
}
(...)
public String getStatusUczestnictwa() {
return this.statusUczestnictwa;
}
public void setStatusUczestnictwa(String statusUczestnictwa) {
this.statusUczestnictwa = statusUczestnictwa;
}
(...)
@Override
public int compareTo(Uczestnik o) {
System.out.println("0: "+ o.statusUczestnictwa);
System.out.println("t: "+ this.statusUczestnictwa);
if(o.statusUczestnictwa == null || this.statusUczestnictwa == null){
if(o.statusUczestnictwa == null && this.statusUczestnictwa == null)
return 0;
else{
if(o.statusUczestnictwa == null)
return 1;
else
return -1;
}
}
else{
if(o.statusUczestnictwa == null && this.statusUczestnictwa == null)
return 0;
else
return this.statusUczestnictwa.compareTo(o.statusUczestnictwa);
}
}
}
Это класс genateted с помощью hibernate, где я добавил Comparable.
И это мой вывод в консоли:
^^^^^^^^^^1
i: 0 -> 2
i: 1 -> 3
i: 2 -> 4
i: 3 -> 1
^^^^^^^^^^2
0: null
t: 3
0: null
t: 4
0: null
t: 1
Все объекты "o" из Uczestniks в функции compareTo в классе Uczestnik всегда равны нулю. Как я могу это исправить?
Попробуйте заменить o.statusUczestnictwa
на o.getStatusUczestnictwa()
внутри compareTo
. Возможно, есть какая-то спящая ленивая загрузка, которая возится с вами.