java - Spring roo,这个探测器相当于什么

标签 java spring-roo

在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";
}

在我的列表中,我只想显示 Activity 报告。 所以在 Spring Roo 控制台中我添加了:finder add --finderName findReportsByActiveEquals 现在我可以选择:

  1. Report.findReportsByActiveEquals( Activity )
  2. Report.findReportsByActiveEquals( Activity ,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 文件中。

问题: 如何创建与原始查找器等效的内容,但仅检索 Activity 报告。

最佳答案

您的代码是一个良好的开始,但“报告”中的下一层不足以支持您的代码。

在原始代码中我看到

uiModel.addAttribute("reports", Report.findReportEntries(firstResult, sizeNo, sortFieldName, sortOrder));

“报告”仅限于单个页面的数据

在你的新版本中我看到了

uiModel.addAttribute("reports", reportsList);

“报告”始终是所有数据。您需要限制仅包含页面数据的列表。我可能会在 java 文件中创建我自己的“finder”方法,它是

Report.findReportEntries

Report.findReportsByActiveEquals

所以我会创建一个

Report.findReportsByActiveEqualsWithPaging

抱歉,我对 ROO 查找器不太熟悉,不知道您是否可以告诉 ROO 如何为您构建这个。

我希望这能给您一个良好的开始。

关于java - Spring roo,这个探测器相当于什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32044838/

相关文章:

Java多维列表

java - 我可以使用哪些类型的 Java API 来构建简单的语音通信程序?

java - 将当前日期字符串注入(inject) Spring bean 配置中

java - 在 Spinner 上执行 click 事件以执行 onItemSelected 中的代码

java - jboss forge 与 spring roo 相比如何?

java - 在另一个 Activity 中启动 Activity

list - Spring Roo - MongoDb -- 字符串列表

spring - DataNucleus:查询的类...尚未解决。检查查询和任何进口规范

java - Spring roo - jetty 无法启动

java - 关于基于 java 的 Spring 配置 : How to use bean generated in one of my dependency in my project