По умолчанию в файле aspectJ для поиска всех объектов, отчетов в моем случае используется следующий искатель.Spring roo, что эквивалентно этому поисковому объекту
uiModel.addAttribute("reports", Report.findReportEntries(firstResult, sizeNo, sortFieldName, sortOrder));
Он имеет следующие параметры: firstResult, sizeNo, sortFieldName, SortOrder. После нажатия в методе списка это исходный код:
@RequestMapping(produces = "text/html")
public String list(@RequestParam(value = "page", required = false) Integer page, @RequestParam(value = "size", required = false) Integer size, @RequestParam(value = "sortFieldName", required = false) String sortFieldName, @RequestParam(value = "sortOrder", required = false) String sortOrder, Model uiModel) {
if (page != null || size != null) {
int sizeNo = size == null ? 10 : size.intValue();
final int firstResult = page == null ? 0 : (page.intValue() - 1) * sizeNo;
uiModel.addAttribute("reports", Report.findReportEntries(firstResult, sizeNo, sortFieldName, sortOrder));
float nrOfPages = (float) Report.countReports()/sizeNo;
uiModel.addAttribute("maxPages", (int) ((nrOfPages > (int) nrOfPages || nrOfPages == 0.0) ? nrOfPages + 1 : nrOfPages));
} else {
// uiModel.addAttribute("reports", Report.findAllReports(sortFieldName, sortOrder));
uiModel.addAttribute("reports", Report.findReportsByActiveEquals(1, sortFieldName, sortOrder).getResultList());
}
addDateTimeFormatPatterns(uiModel);
return "reports/list";
}
В моем перечислении, то я только хочу показать активные отчеты. Таким образом, в консоли Spring Roo Я добавил: finder add --finderName findReportsByActiveEquals
Теперь я могу выбрать между:
- Report.findReportsByActiveEquals (активные)
- Report.findReportsByActiveEquals (активный, sortFieldName, SortOrder)
проблема заключается в том, что у этих сгенерированных искателей отсутствуют параметры firstResult, sizeNo.
Новый код, который я могу придумать это:
@RequestMapping(produces = "text/html")
public String list(@RequestParam(value = "page", required = false) Integer page, @RequestParam(value = "size", required = false) Integer size, @RequestParam(value = "sortFieldName", required = false) String sortFieldName, @RequestParam(value = "sortOrder", required = false) String sortOrder, Model uiModel) {
if (page != null || size != null) {
int sizeNo = size == null ? 10 : size.intValue();
final int firstResult = page == null ? 0 : (page.intValue() - 1) * sizeNo;
// uiModel.addAttribute("reports", Report.findReportEntries(firstResult, sizeNo, sortFieldName, sortOrder));
<List<Report> reportsList = Report.findReportsByActiveEquals(1, sortFieldName, sortOrder).getResultList();
uiModel.addAttribute("reports", reportsList);
float nrOfPages = (float) reportsList.size()/sizeNo;
uiModel.addAttribute("maxPages", (int) ((nrOfPages > (int) nrOfPages || nrOfPages == 0.0) ? nrOfPages + 1 : nrOfPages));
} else {
// uiModel.addAttribute("reports", Report.findAllReports(sortFieldName, sortOrder));
uiModel.addAttribute("reports", Report.findReportsByActiveEquals(1, sortFieldName, sortOrder).getResultList());
}
addDateTimeFormatPatterns(uiModel);
return "reports/list";
}
Почему это проблема? Эффект заключается в том, что, хотя в нижней части страницы списка говорится: Список результатов на странице: 5 10 15 20 25, всегда перечислены все записи. Также исходный искатель не находится в файле Report_Roo_Finder.aj.
Вопрос: Как создать эквивалент исходного искателя, но только получить активные отчеты.
Наня, это помогло или что вы сделали? – melutovich