• Курсы Академии Кодебай, стартующие в мае - июне, от команды The Codeby

    1. Цифровая криминалистика и реагирование на инциденты
    2. ОС Linux (DFIR) Старт: 16 мая
    3. Анализ фишинговых атак Старт: 16 мая Устройства для тестирования на проникновение Старт: 16 мая

    Скидки до 10%

    Полный список ближайших курсов ...

Проблема xe:documentJsonService - изменить ответ.

duchan

Green Team
20.09.2006
128
11
BIT
168
День добрый.

Использую REST service xe:documentJsonService - он замечательно отдает документ в JSON, но тут возникла необходимость подправить отдаваемый JSON. Вопрос: можно ли это как-то сделать?
Или подскажите как (чем) Domino конвертит notesDocument в JSON.
 

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 967
611
BIT
322
День добрый.

Использую REST service xe:documentJsonService - он замечательно отдает документ в JSON, но тут возникла необходимость подправить отдаваемый JSON. Вопрос: можно ли это как-то сделать?
Или подскажите как (чем) Domino конвертит notesDocument в JSON.
перехватить можно весь вывод с сервера, при запросе, вот на какой стадии это делать (для коррекции данных) - не знаю
еще есть некоторые манипуляции, на codeby лежит здесь
 
Последнее редактирование:

duchan

Green Team
20.09.2006
128
11
BIT
168
Спасибо за наводки.
В презенташке нашел такой код

Код:
var db:NotesDatabase = session.getDatabase("", param['db']);
var doc:NotesDocument = db.getDocumentByUNID(param['documentId']);

try{
var docXML = doc.generateXML();
var writer = facesContext.getResponseWriter();
var excon = facesContext.getExternalContext();
excon.getResponse().setContentType("application/json");
writer.write( org.json.XML.toJSONObject(docXML).toString());
}
catch(e){
print(e.toString())
}
Вроде он должен делать то что нужно, но попробовав в customRestService на doGet
Код:
var db:NotesDatabase = session.getDatabase("", param['db']);
var doc:NotesDocument = db.getDocumentByUNID(param['documentId']);

try{
var docXML = doc.generateXML();
return org.json.XML.toJSONObject(docXML).toString();
}
catch(e){
print(e.toString())
}
получил ошибку что не известен такой пакет как org (т.е. ругалось на org.json.XML). Походу надо как-то подключать данный пакет, но я тут несколько нуб и как его подключить не пойму. Можете подсказать как заставить работать org.json.XML ?

у меня 9.0.1
 

garrick

Lotus Team
26.10.2009
1 357
151
BIT
244
Может я чего путаю, но мне кажется JSON только в 10-й версии появился и даже в LS. Если я прав, то для 9-ки надо что-то колхозить самому, как обычно - подложить какую-нибудь Java JSON библиотеку, их полно всяких. А в JavaScript свой должен быть, есть его в IBM не кастрировали.
 

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 967
611
BIT
322
Спасибо за наводки.
В презенташке нашел такой код

Код:
var db:NotesDatabase = session.getDatabase("", param['db']);
var doc:NotesDocument = db.getDocumentByUNID(param['documentId']);

try{
var docXML = doc.generateXML();
var writer = facesContext.getResponseWriter();
var excon = facesContext.getExternalContext();
excon.getResponse().setContentType("application/json");
writer.write( org.json.XML.toJSONObject(docXML).toString());
}
catch(e){
print(e.toString())
}
Вроде он должен делать то что нужно, но попробовав в customRestService на doGet
Код:
var db:NotesDatabase = session.getDatabase("", param['db']);
var doc:NotesDocument = db.getDocumentByUNID(param['documentId']);

try{
var docXML = doc.generateXML();
return org.json.XML.toJSONObject(docXML).toString();
}
catch(e){
print(e.toString())
}
получил ошибку что не известен такой пакет как org (т.е. ругалось на org.json.XML). Походу надо как-то подключать данный пакет, но я тут несколько нуб и как его подключить не пойму. Можете подсказать как заставить работать org.json.XML ?

у меня 9.0.1
я не вспомню про наличие в штатной поставке, но есть в мавене, jar положить в соответ. раздел базы
1590739105008.png

туториал по фи-циям
взять здесь
только надо учесть версию jvm (в манифесте jar указано, открыть как архив), в 9.0.1 jvm 1.8 только с ФП8 , до того 1.6
 
  • Нравится
Реакции: Vertigo

duchan

Green Team
20.09.2006
128
11
BIT
168
да, с jar'ом всё получилось... Спасибо.

Только результирующий JSON ну совсем не такой же как у documentJsonService... Печалька... ;(
 

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 967
611
BIT
322
да, с jar'ом всё получилось... Спасибо.

Только результирующий JSON ну совсем не такой же как у documentJsonService... Печалька... ;(
можно сделать его любым
там на сервлетах все сделано
фабрика регает классы и по пути в запросе вызывает класс, кот. наследует класс с базовой обработкой вывода в жсон...
ещё ссылка
 
  • Нравится
Реакции: Vertigo

garrick

Lotus Team
26.10.2009
1 357
151
BIT
244
Проверьте может быть у вас есть В 9.0.1 FP9 такой точно есть.
 

garrick

Lotus Team
26.10.2009
1 357
151
BIT
244
заметил что иногда в билдпаз не подтягиваются либы (из типа .../workplace/...), в дизигнере
Случается из-за разных версий Extension Library. Надо зайти в свойства базы на закладку XPages->Page Generation и убрать все галочки в разделе XPages Libraries. Потом сделать Clear проекта, потом поставить галочки на место и сделать Build.
 

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 967
611
BIT
322
Случается из-за разных версий Extension Library. Надо зайти в свойства базы на закладку XPages->Page Generation и убрать все галочки в разделе XPages Libraries. Потом сделать Clear проекта, потом поставить галочки на место и сделать Build.
никак
1591119361369.png

1591119460841.png
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!