You don’t have to declare report parameters if you pass them using the report execution API.
For example, if you define the following Groovy dataset in a report band:
def users = params['users']
return users.collect {
['username': it.username, 'firstName': it.firstName, 'lastName': it.lastName]
}
then you can just pass the users
parameter as follows, without any additional definition:
@Autowired
private CollectionContainer<User> usersDc;
@Autowired
private UiReportRunner uiReportRunner;
@Subscribe("runReport")
public void onRunReportClick(Button.ClickEvent event) {
List<User> users = usersDc.getItems();
uiReportRunner.byReportCode("user-list")
.addParam("users", users)
.runAndShow();
}