我有一个soap请求返回User对象数组。现在我想添加过滤器参数,就像user'd一样,'har'和/或numberOfLogins介于10到20之间。基于这些参数,我构建一个查询并获得结果。但问题是我无法在SOAP请求中传递此动态数量的过滤器参数。我怎样才能做到这一点?我已经尝试使用Map来获取过滤器名称和值,但它没有用。还试过Array然后我无法决定我必须做什么过滤。
我们在网站上展示了this kind of form。其中所有字段都是可选字段,因此用户可以在全部或部分字段中输入值。我想获取用户在表单中输入的值,仅用于那些填充了值并且不希望在请求中使用其他参数的字段。所以这里n * umber的参数不固定*。因此,在不知道参数数量的情况下,我无法确定针对这种情况采用的方法参数。我应该采取哪种论点。我不能在参数中获取字符串数组,因为我还需要知道字段的名称(用户已输入值)和它的值。我曾尝试将Map作为参数,但没有用。
答案 0 :(得分:0)
我认为您需要的是一种描述查询来过滤用户对象的方法。
您必须为此创建自定义类型,并在其中定义规则:
<xs:complexType name="query">
<xs:sequence>
.... equals rule ....
.... between rule ....
....
</xs:sequence>
</xs:complexType>
您需要字段的名称,字段的值/值以及适用的操作(用户名<equals>
,登录次数<between>
某事等等)。
所以请求看起来像这样:
<query>
<equals>
<field>username</field>
<value>John Doe</value>
</equals>
....
<between>
<field>logins</field>
<startValue>10</startValue>
<endValue>20</endValue>
</between>
</query>
根据您的描述,简单的情况是“和”所有这些条件以获得您的过滤器。但另外你可以有“OR”组合,“NOT”等。
棘手的部分是为这种类型定义XML模式(对输入进行适当的验证)。如果这很麻烦,你可以在其中加上any element or any type的查询标记,但我强烈反对。
看一下the Query schema of Collaborative Application Markup Language (CAML)的灵感。希望这有帮助!