У меня есть форма, в которой пользователь может фильтровать незавершенные транзакции. Я хочу использовать функцию разбиения на страницы весны. Это работает (как я и хотел), только если я не хочу фильтровать (то же, что и запрос getAll()). Моя проблема заключается в том, что я отправляю форму контроллеру, он ищет отфильтрованные транзакции, дает информацию о количестве страниц, об общем количестве ect .. Но если я нажму на кнопку разбиения на страницы, то идет метод, подпись которого GET (URL-адрес, например, localhost .../pending? Page = 2 & size = 20), и моя форма инициализируется значениями по умолчанию. Поэтому фильтр не работает, просто разбивка на страницы.Pagination and filter in Spring MVC
@RequestMapping(value = "/pending", method = RequestMethod.GET, produces = "text/html")
public String getPendingTransactions(@ModelAttribute("pendingForm") PendingTransactionForm pendingForm, Model uiModel, HttpServletRequest httpServletRequest, Pageable pageable) {
PageWrapper<Transaction> transactionItems = new PageWrapper<Transaction>(transactionService.searchPendingItemsByParams(pendingForm, pageable));
uiModel.addAttribute("pendingForm", pendingForm);
uiModel.addAttribute("transactionItems", transactionItems);
uiModel.addAttribute("shoplist", transactionService.getShopListForNotFinishedItems());
return "transaction/pendingtransactions";
}
@RequestMapping(value = "/pending", method = RequestMethod.POST)
public String processPendingTransactions(@ModelAttribute("pendingForm") PendingTransactionForm pendingForm, Model uiModel, HttpServletRequest httpServletRequest, Pageable pageable) {
PageWrapper<Transaction> transactionItems = new PageWrapper<Transaction>(transactionService.searchPendingItemsByParams(pendingForm, pageable));
uiModel.addAttribute("pendingForm", pendingForm);
uiModel.addAttribute("transactionItems", transactionItems);
uiModel.addAttribute("shoplist", transactionService.getShopListForNotFinishedItems());
return "transaction/pendingtransactions";
}
Есть ли какое-либо решение, как реализовать фильтр и разбиение на страницы вместе?
ОБНОВЛЕНИЕ: благодаря ответу Хосе Луиса Мартина, он работает!
@RequestMapping("/transactions")
@Controller
@SessionAttributes("pendingForm")
public class TransactionsController {
@ModelAttribute("pendingForm")
public PendingTransactionForm initializePendingForm() {
return new PendingTransactionForm();
}
@RequestMapping(value = "/pending", method = {RequestMethod.POST, RequestMethod.GET}, produces = "text/html")
public String getPendingTransactions(@ModelAttribute("pendingForm") PendingTransactionForm pendingForm, Model uiModel, Pageable pageable) {
PageWrapper<Transaction> transactionItems = new PageWrapper<Transaction>(transactionService.searchPendingItemsByParams(pendingForm, pageable));
uiModel.addAttribute("transactionItems", transactionItems);
uiModel.addAttribute("shoplist", transactionService.getShopListForNotFinishedItems());
return "transaction/pendingtransactions";
}
}