Динамические вложенные отчеты джаспера с основным источником данных и передачей параметров подотчета - PullRequest
0 голосов
/ 08 июля 2019

Я работаю с динамическими подотчетами яшмы, у меня есть источник данных, который содержит отображение один-ко-многим, детали пользователя со списком ролей, я пытаюсь добиться основной отчет должен содержать детали пользователя, а подотчет должен содержать список ролей, первичный ключ между ними - userId

Ссылка от http://dynamicjasper.com/2010/10/06/how-to-add-subreports-fast-way/ Я делаю то же самое, но получаю сообщение об ошибке. Я получаю сообщение об ошибке. Иногда я не могу найти, а иногда просто пустой pdf

открытый класс SubReportTest расширяет BaseDjReportTest {

public DynamicReport buildReport() throws Exception {
    FastReportBuilder drb = new FastReportBuilder();
    drb.addColumn("UserId", "userId", Integer.class.getName(),30)
            .addColumn("Name", "name", String.class.getName(),30)
            .addColumn("Product Line", "productLine", String.class.getName(),50)
            .addColumn("Item", "item", String.class.getName(),50)
            .addColumn("Item Code", "id", Long.class.getName(),30,true)
            .addColumn("Quantity", "quantity", Long.class.getName(),60,true)
            .addColumn("Amount", "amount", Float.class.getName(),70,true)
            .addGroups(1)
            .setMargins(5, 5, 20, 20)
            .setTitle("November " + getYear() +" sales report")
            .setSubtitle("This report was generated at " + new Date())
            .setUseFullPageWidth(true);

    drb.addField("userRolesList", List.class.getName());


    DynamicReport drFooterSubreport = createFooterSubreport();
    drb.addSubreportInGroupHeader(2, drFooterSubreport,  new ClassicLayoutManager(),
            "userRolesList", DJConstants.DATA_SOURCE_ORIGIN_FIELD, DJConstants.DATA_SOURCE_TYPE_COLLECTION);

    drb.setUseFullPageWidth(true);

    DynamicReport dr = drb.build();
    return dr;
}



private DynamicReport createFooterSubreport() throws Exception {
    FastReportBuilder rb = new FastReportBuilder();
    DynamicReport dr = rb
            .addColumn("RoleID", "roleId", Integer.class.getName(), 100)
            .addColumn("Type", "type", String.class.getName(), 50)
            .addColumn("Status", "status", String.class.getName(), 50)
            .addGroups(1)
            .setMargins(5, 5, 20, 20)
            .setUseFullPageWidth(true)
            .setTitle("Footer Subreport for this group")
            .build();
    return dr;
}


public static void main(String[] args) throws Exception {
    SubReportTest test = new SubReportTest();
    test.testReport();
    JasperViewer.viewReport(test.jp);
}

}

Я получаю сообщение об ошибке a roleId can't find, я нашел много решений для jrxml, также я не хочу использовать jrxml, я ищу просто решение для java.

...