【发布时间】:2015-08-17 07:25:45
【问题描述】:
aspectJ 文件中的默认值是对以下查找器进行编码以检索所有对象,在我的情况下为报告。
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(active)
- Report.findReportsByActiveEquals(active, sortFieldName, sortOrder)
问题是这些生成的finder缺少firstResult、size没有参数。
我能想出的新代码是:
@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 文件中。
问题: 如何创建与原始查找器等效的内容,但仅检索活动报告。
【问题讨论】:
标签: java spring-roo