Я использую JSF2.0 в своем приложении.Бизнес-требования в моем проекте таковы, что при загрузке страницы отображается список.Список поступает из уровня DAO или уровня веб-службы.Позволяет назвать этот оригинальный список.Теперь у нас есть 2 списка, копии друг друга, в которых только исходный список, а другой ограничен JSF
Теперь список является редактируемым списком, поэтому я использую a для отображения списка и каждой ячейки вэтоТеперь при нажатии кнопки СОХРАНИТЬ измененный список пользователем (так как список редактируемый) сравнивается с исходным списком.Только если два списка отличаются, измененный список отправляется обратно в веб-сервис.Проблема и проблема, с которой я сталкиваюсь, заключается в том, что в первой строке самого метода save () как исходный, так и измененный список точно совпадают и указывают только на измененный список.Поэтому я не могу сравнить 2 списка.
Моя реализация выглядит следующим образом:
PhaseListener вызывает метод ниже при загрузке страницы
public String populateDataTable() {
this.orderList = new ArrayList<ItemOrder>();
this.originalOrderList = new ArrayList<ItemOrder>();
MockWebService mockService = new MockWebService();
this.setOrderList(mockService.mockWSMethod());
this.originalOrderList = this.getOrderList();//i know this is where i am doing something wrong. i need to deep copy a list. but for this i cannot make an additional web service call and call that web service again and store the list in originalOrderList
return "view";
}
При нажатии кнопки сохранения
public String saveAction() {
boolean isSame = true; // true if same and false if different
for (int i = 0; i < this.originalOrderList.size(); i++) {
if (!this.originalOrderList.get(i).equals(this.orderList.get(i))) {
isSame = false;
}
}
//however both originalOrderList and orderList have the same modified List.
if (isSame == true) {
System.out.println("Same lists");
} else {
System.out.println("Different lists");
}
return "default";
}
Пожалуйста, помогите мне.
Заранее спасибо, Киран