Получение данных JSON из restService в XPages
Можно ли получить данные json из службы restService, используя код вместо pathinfo?
ищу что-то вроде: 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>
1 ответ
Я не думаю, что это возможно без глубокого взлома основных сервисов ExtLib REST.
В этих сервисах выходные данные генерируются и записываются в определенный поток вывода, который обычно является тем из HttpResponse.
У вас есть два варианта для этого:
- Создайте свой собственный сервис отдыха для jdbcQueryJsonService, расширив существующий и добавив свой собственный метод для доступа к выходному потоку.
- Используйте отражение, чтобы получить доступ к закрытому свойству, которое содержит экземпляр outputtream
Для обоих вариантов я не думаю, что это стоит усилий. Намного проще создать собственное соединение JDBC с сервером SQL и преобразовать результат в JSON самостоятельно.
РЕДАКТИРОВАТЬ:
Не забывайте, что вы получаете доступ к компоненту. Компонент ничего не знает о выводе, который генерируется средством визуализации в зависимости от текущего состояния компонента. Хотя службы ExtLib REST немного отличаются от концепций JSF (их вывод генерируется сервлетом), шаблон тот же.
Вот почему ни один компонент XPages / JSF не имеет такого метода.