在 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 的输出流。
您有两种选择:
- 通过扩展现有的 jdbcQueryJsonService 创建您自己的休息服务,并添加您自己的访问输出流的方法
- 使用反射访问私有属性,其中包含输出流实例
对于这两个选项,我认为这不值得付出努力。创建您自己的 JDBC 到 SQL 服务器的连接并自行将结果转换为 JSON 会容易得多。
编辑:
不要忘记您正在访问一个组件。组件对输出一无所知,输出是由渲染器根据组件的当前状态生成的。虽然 ExtLib REST 服务与 JSF 概念略有不同(它们的输出由 servlet 生成),但模式是相同的。
这就是为什么没有 XPages / JSF 组件具有这样的方法的原因。
是否可以使用代码而不是使用路径信息从 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 的输出流。
您有两种选择:
- 通过扩展现有的 jdbcQueryJsonService 创建您自己的休息服务,并添加您自己的访问输出流的方法
- 使用反射访问私有属性,其中包含输出流实例
对于这两个选项,我认为这不值得付出努力。创建您自己的 JDBC 到 SQL 服务器的连接并自行将结果转换为 JSON 会容易得多。
编辑:
不要忘记您正在访问一个组件。组件对输出一无所知,输出是由渲染器根据组件的当前状态生成的。虽然 ExtLib REST 服务与 JSF 概念略有不同(它们的输出由 servlet 生成),但模式是相同的。
这就是为什么没有 XPages / JSF 组件具有这样的方法的原因。