在 XPages 中从 restService 获取 JSON 数据

Getting JSON data from restService in XPages

是否可以使用代码而不是使用路径信息从 restService 获取 json 数据?

寻找类似的东西:getComponent("restService1").get...

<xe:restService id="restService1" pathInfo="rest">
                    <xe:this.service>
                        <xe:jdbcQueryJsonService connectionName="mssql" contentType="application/json">
                            <xe:this.sqlQuery><![CDATA[SELECT * FROM Order]]></xe:this.sqlQuery>
                        </xe:jdbcQueryJsonService>
                    </xe:this.service>
                </xe:restService>

如果不深入研究核心 ExtLib REST 服务,我认为这是不可能的。

在这些服务中,生成输出并将其写入定义的输出流,通常是来自 HttpResponse 的输出流。

您有两种选择:

  1. 通过扩展现有的 jdbcQueryJsonService 创建您自己的休息服务,并添加您自己的访问输出流的方法
  2. 使用反射访问私有属性,其中包含输出流实例

对于这两个选项,我认为这不值得付出努力。创建您自己的 JDBC 到 SQL 服务器的连接并自行将结果转换为 JSON 会容易得多。

编辑:

不要忘记您正在访问一个组件。组件对输出一无所知,输出是由渲染器根据组件的当前状态生成的。虽然 ExtLib REST 服务与 JSF 概念略有不同(它们的输出由 servlet 生成),但模式是相同的。

这就是为什么没有 XPages / JSF 组件具有这样的方法的原因。