Description
Dynamic filtering from the Filter Widget (None condition) fails only in Feature Grid/WFS flow.
The same CQL works in WMS (GeoServer CQL_FILTER), but fails in WFS because internal CQL -> OGC conversion in MapStore does not handle this null-filter expression correctly.
CQL is generated by:
toCQLFilter in /web/client/utils/FilterUtils.js
toCQLFilter generates the filter text, but parser/converter handling in WFS path breaks, so no WFS request is sent by Feature Grid.
How to reproduce
Expected Result
Feature Grid sends WFS request and shows filtered records.
Current Result
Feature Grid shows no features and no WFS request is sent. Console shows parse/convert errors from wfsQueryEpic, e.g.:
Error in epic "wfsQueryEpic". Original error: Error: ERROR: In parsing: [(isNull("budgetx1")=true))], expected one of:
COMPARISON: /^(=|<>|<=|<|>=|>|LIKE|ILIKE)/i
BETWEEN: /^BETWEEN/i
COMMA: /^,/
IS_NULL: /^IS NULL/i
RPAREN: /^\)/
Uncaught Error: ERROR: In parsing: [(isNull("budgetx1")=true))], expected one of:
COMPARISON: /^(=|<>|<=|<|>=|>|LIKE|ILIKE)/i
BETWEEN: /^BETWEEN/i
COMMA: /^,/
IS_NULL: /^IS NULL/i
Description
Dynamic filtering from the Filter Widget (
Nonecondition) fails only in Feature Grid/WFS flow.The same CQL works in WMS (GeoServer
CQL_FILTER), but fails in WFS because internal CQL -> OGC conversion in MapStore does not handle this null-filter expression correctly.CQL is generated by:
toCQLFilterin/web/client/utils/FilterUtils.jstoCQLFiltergenerates the filter text, but parser/converter handling in WFS path breaks, so no WFS request is sent by Feature Grid.How to reproduce
Open map: https://dev-mapstore.geosolutionsgroup.com/mapstore/#/viewer/64442
Create/activate a user-defined filter with
Nonecondition in Filter WidgetOpen Feature Grid (attribute table) for the same layer
Screen.Recording.2026-03-03.at.13.27.18.mov
Expected Result
Feature Grid sends WFS request and shows filtered records.
Current Result
Feature Grid shows no features and no WFS request is sent. Console shows parse/convert errors from
wfsQueryEpic, e.g.: