Hi,
I’m customizing the standard ReportRunView (io.jmix.reportsflowui.view.run.ReportRunView) because I needed to adjust the filtering options in our application. During this process, I noticed two behaviors in the base implementation in Jmix 2.7.0 that I’d like to understand better.
Behavior 1: Filters are hidden when reports != null
In onBeforeShow() the framework hides the entire filter section if the screen was opened with an externally injected list of reports (setReports(List<Report>)).
This means the user cannot apply UI filters such as name, code, group or updated date anymore.
Behavior 2: Filters are not applied when reports != null
Inside the original reportsDlLoadDelegate() method, the logic short-circuits like this:
if (reports != null) {
return reports;
}
This completely bypasses the filter mechanism.
Even if the filter components still had values, no filtering would happen in this case.
My approach
In my extension I wanted to support:
- keeping the external report restriction
- but still allow filtering within the provided list
To achieve this, I now always load the filtered list from the repository, and if reports != null, I intersect the result with the externally provided list. This allows standard filtering while still respecting the external restriction.
My question to the Jmix team
Is it intentional that:
- the filter UI is automatically hidden when
reports != null, and - the data loader completely skips applying filters in that case?
I would like to understand whether this is a deliberate design decision (e.g. “external list = final list, no further filtering expected”), or more of an implementation detail that could be reconsidered.
Thanks!

