【问题标题】:How we can override a WSO2 DSS @nil=true value我们如何覆盖 WSO2 DSS @nil=true 值
【发布时间】:2015-03-12 20:07:22
【问题描述】:

我正在为我的服务使用邮资 Db。当为任何字段定义 Null 时,DSS 给出了一些对象,所以我的前端也得到了相同的对象。但是他们期待“NULL”而不是这个他们得到 {@nil":"真的”} 我如何才能获得 NULL 值 As NULL only 并且它也为此行创建自己的命名空间 http://www.w3.org/2001/XMLSchema-instance"

username        password
===========  ============
NULL            NULL
kk             a123

对于上面的情况,我在 WSO2dss 方面是这样的

<Datalist>
     <username xmlns="http:sps.in" xsi:nil="true" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"/>
     <password xsi:nil="true" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"/>
  </Datalist>

从我的 wso2esb 方面,我得到这样的 JSON

{"Body":{"Datalist":{"username":{"@nil":"true"},"password":{"@nil":"true"}}}}

但是我的前端服务期望采用以下格式,可以在上面进行修改

 {"Body":{"Datalist":{"username":"NULL","password":"NULL"}}}

【问题讨论】:

    标签: wso2 wso2esb wso2dss


    【解决方案1】:

    在 XML 中,指示特定 XML 节点的值为 NULL 的标准/推荐方式是通过符号 [xsi:nil="true" xmlns:xsi="http://www.w3.org /2001/XMLSchema-instance"]。如果任何标准 XML 解析器遇到此特定符号,则包含上述符号的元素将被视为具有 NULL 值的元素。这特别有用,当存在诸如“NULL”之类的值(不是实际的 NULL,而是包含字符“N”、“U”、“L”、“L”的字符串)时,因为无法区分真实的NULL 值和“NULL”字符流。

    因此,处理这种情况的最佳方法是在客户端检查 @nil 属性,同时解析作为 Web 服务调用响应返回的 JSON 内容。或者,您可以在数据服务查询级别添加 XSLT 转换,以按照您想要的方式转换响应(以 XML 格式在 DSS 内部处理,然后返回 JSON 内容),以便您能够添加任何自定义规则和在返回到客户端之前转换响应。您可以参考产品包中“DSS_HOME/samples/dbs/excel/”目录下名为“ExcelSampleService.dbs”的示例数据服务,了解如何完成此操作。

    希望这会有所帮助!

    问候, 普拉巴斯

    【讨论】:

      【解决方案2】:

      它对我有用。我只是通过像这样更改我的 AS(应用程序服务器)将这两个属性(xsi:nil,xmlns:xsi)放入我的 XML 中:

      public static OMElement addAttributeNull(OMElement parametro){
          parametro.addAttribute("xmlns:xsi", "http://www.w3.org/2001/XMLSchema-instance", null);
          parametro.addAttribute("xsi:nil", "true", null);
          return parametro;
      }
      

      【讨论】:

      • 你把这些值放在哪里了?在您的应用程序中还是在某些应用程序服务器配置文件中?
      • 对不起,迟到了......我把它放在我的 Java 类中,就在我将参数传递给我的 DSS 的地方。这就像一个普通的属性!
      猜你喜欢
      • 2021-01-03
      • 2019-02-26
      • 1970-01-01
      • 2021-03-19
      • 1970-01-01
      • 1970-01-01
      • 2011-11-26
      • 1970-01-01
      • 2020-11-26
      相关资源
      最近更新 更多