2015-08-17 4 views
1

По умолчанию в файле 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 Теперь я могу выбрать между:

  1. Report.findReportsByActiveEquals (активные)
  2. 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.

Вопрос: Как создать эквивалент исходного искателя, но только получить активные отчеты.

ответ

0

Ваш код является хорошим началом, но ваш следующий уровень в «Отчеты» не поддерживает ваш код.

В исходном коде я вижу

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

«отчеты» ограничивается данными отдельной страницы в

В то время как в новой версии я вижу

uiModel.addAttribute("reports", reportsList); 

«отчеты» всегда все данные. Вам нужно ограничить список только данных страницы. Я бы, наверное, просто создать свой собственный метод «искателя» в файле Java, который является комбинацией

Report.findReportEntries 

и

Report.findReportsByActiveEquals 

Так что я бы создать

Report.findReportsByActiveEqualsWithPaging 

К сожалению Я не достаточно знаком с поисковиком ROO, чтобы узнать, можете ли вы сказать ROO, как это сделать для вас.

Надеюсь, это даст вам хорошее начало.

+0

Наня, это помогло или что вы сделали? – melutovich

Смежные вопросы