微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

ACS:search.in 不支持 odata 过滤器语法中的特殊字符

如何解决ACS:search.in 不支持 odata 过滤器语法中的特殊字符

特殊字符不适用于 ACS 中的 search.in 运算符,例如这不会从 ACS 获取任何值 search.in(category,'Books & reference')。 我也尝试按如下方式对特殊字符进行编码,但仍然没有运气。

search.in(category,'Books%20%26%20reference')
search.in(category,'Books %26 reference')
search.in(category,'Books+%26+reference')
search.in(category,'Books & reference')

它的唯一工作方式是使用 eq 运算符,如下所示

category eq 'Books & reference'

但根据 ACS 文档,当有多个属性值要过滤时,例如 seach.in 性能更高,也更方便

search.in(category,'Movies,Education,Tools')

比使用 eq 运算符更方便,如下所示

category eq 'Books' OR category eq 'Education' OR category eq 'Tools'

解决方法

请尝试更改:

search.in(category,'Books & reference')

search.in(category,'Books & reference','|')

基本上在第一个中,space 被视为分隔符。在第二个中,您明确告知使用 pipe (|) 作为分隔符。

考虑到管道字符不在您的搜索值中,您的类别字段搜索 Books & reference 而在第一种情况下,搜索 Book& 和 {类别字段中的 {1}} 个值。

这就是 documentation 关于分隔符的说法(强调我的):

解析时将每个字符作为分隔符处理的字符串 valueList 参数。此参数的默认值为“,” 这意味着它们之间有空格和/或逗号的任何值 会分开。如果您需要使用除空格和以外的分隔符 逗号,因为您的值包括这些字符,您可以指定 替代分隔符,例如“|”在这个参数中。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?