我有一个Geoserver WFS请求,其中包含基于跨层过滤器的cql,如下所示:
...&CQL_FILTER=INTERSECTS(the_geom, querySingle('myLayerName','the_geom','the_id = F338'))
这不起作用。 Geoserver给了我这个错误信息:
java.lang.NullPointerException:PropertyDescriptor为null - 你呢? 请求一个不存在的房产?
如果我将过滤器更改为:
&CQL_FILTER=INTERSECTS(the_geom, querySingle('myLayerName','the_geom','INCLUDE'))
它正在运作。
第一个例子可能出现什么问题?事实上,具有值F338的id确实存在。
Geoserver是否期望一个整数作为id?在CQL中,过滤器可以是字符串,但必须引用它们。在我的例子中,我显然无法引用该值,因为querySingle
函数的整个参数本身就是一个引用。
答案 0 :(得分:3)
对于字符串比较,您需要输入两个单引号,即 'the_id ='''F338'''。 (一个双引号不起作用)
这个愚蠢的无证小东西花了我5个小时的尝试和错误......