Получение данных 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.

У вас есть два варианта для этого:

  1. Создайте свой собственный сервис отдыха для jdbcQueryJsonService, расширив существующий и добавив свой собственный метод для доступа к выходному потоку.
  2. Используйте отражение, чтобы получить доступ к закрытому свойству, которое содержит экземпляр outputtream

Для обоих вариантов я не думаю, что это стоит усилий. Намного проще создать собственное соединение JDBC с сервером SQL и преобразовать результат в JSON самостоятельно.

РЕДАКТИРОВАТЬ:

Не забывайте, что вы получаете доступ к компоненту. Компонент ничего не знает о выводе, который генерируется средством визуализации в зависимости от текущего состояния компонента. Хотя службы ExtLib REST немного отличаются от концепций JSF (их вывод генерируется сервлетом), шаблон тот же.

Вот почему ни один компонент XPages / JSF не имеет такого метода.

Другие вопросы по тегам