我有一个过滤器,我不想在启动应用程序时使用,只能在某个操作上使用。我知道已有question关于此问题,但它对我没有帮助,实际上我不理解这两个答案。
我的逻辑是“我的列=值或1 = 1”来获取我的所有数据集,而不仅仅是过滤器,如果它没有被调用。
这是我写的:
FILTER (([ct]='%ct%') or '%ct%' = '%ct%')
VALIDATION
'ct' '^[a-zA-Z\-]+$'
END
我使用
在Openlayers 3上使用参数调用我的图层 url: 'http://localhost:5000/cgi-bin/mapserv.exe?map=/ms4w/apps/tutorial/htdocs/essai.map&SERVICE=WMS&VERSION=1.1.1%20&REQUEST=GetCapabilities',
serverType: 'mapserver',
params: {'LAYERS': 'aisdata', 'ct':'myvalue', 'TILED': true}
});
但是我的所有数据集都被返回了。 (如果我在mapfile中删除'%ct%' = '%ct%'
,则过滤器应用得很好)
有人能帮助我忽略我的病情吗?
答案 0 :(得分:1)
在VALIDATION块中添加一个默认值,以便您的值默认为空字符串,然后在FILER块中添加OR条件,以检查该值是否为空字符串:
Wikitude.Architect.WTFeatures
如果数据库列LoadArchitectWorldFromURL
确实具有数字类型,则前一个过滤器将产生内部服务器错误,因为您无法将空字符串与数字进行比较。在这种情况下,请使用数值作为默认值,例如0或-1。