2014-11-06 5 views
2

Мне нужно вызвать метод java bean из библиотеки javascript на стороне клиента. Есть ли способ вызвать ssjs из библиотеки csjs?Вызовите SSJS из CSJS в XPages

что-то вроде этого, что работает в csjs var test = # {javascript: getConfig.getKeyValuesList ("param")};

+0

Чтобы добавить еще один вариант ответа Дэвида, вы можете [создать свой собственный обработчик событий и выполнить его с помощью JavaScript на стороне клиента] (http://stackoverflow.com/a/19580811/1047998). – Naveen

+0

Возможный дубликат [Как вызвать функцию SSJS из вычисленной ссылки HTML?] (Http://stackoverflow.com/questions/19576077/how-to-call-ssjs-function-from-computed-html-link) – Naveen

ответ

7

Вы хотите использовать инструмент Remote Service в Ext. Библиотека. Это позволяет вам определить функцию в SSJS и вызвать ее из CSJS.

Там в его обсуждение здесь: http://www.notesin9.com/2014/05/21/tim-explains-json-rpc-codefortim/

Там старый NotesIn9 видео должен все равно должны быть очень справедливы: http://www.notesin9.com/2011/08/25/notesin9-033-introduction-to-remote-services-in-xpages/

+0

Спасибо I рассмотрит это – lense

3

Вы можете сделать это так, как вы показали в вашем примере, как

var test = #{javascript:yourBean.getSomething()}; 

Сначала выполняется SSJS-код, результат вставляется в CSJS-код и отправляется клиенту.

Это зависит от вашего варианта использования, если это может быть для вас решением.

Ваш немного модифицированный пример

var test = ['#{javascript:getConfig.getKeyValuesList("param").join("', '")}']; 

будет выполнять METHODE getKeyValuesList() возвращает список строк, .join() будет преобразовать его в строку, как «ааа ' 'BBB',' ссс»и отправьте полученный код клиента:

var test = ['aaa', 'bbb', 'ccc']; 
+2

Проблема: SSJS-код выполняется в фазе визуализации (для встроенного CSJS). Чтобы получить «свежий результат», вы должны вызывать частичное/полное обновление в библиотеке CSJS (http://xpageswiki.com/web/youatnotes/wiki-xpages.nsf/dx/Work_with_events_and_partial_or_full_refresh). –

3

Я делаю это с помощью комбинации библиотек CSJS где определяют объекты со свойствами и методами, а затем на пользовательский элемент управления (как правило, один с ресурсом для библиотека) Я добавляю scriptBlock для получения данных на стороне клиента ob ектов. Как откровенно сказано, это происходит только тогда, когда страница загружается, но для данных конфигурации, как то, что вы, кажется, получаете, что работает отлично.

Вот пример csjs класс для вашей библиотеки:

var appConfig = { 
    param1 : "", 
    param2 : "" 
} 

Тогда это код ScriptBlock:

<xp:scriptBlock> 
    <xp:this.value><![CDATA[ 
// setup config parameters 
appConfig.param1 = '#{javascript:getConfig.getKeyValuesList("param1")}'; 
appConfig.param2 = '#{javascript:getConfig.getKeyValuesList("param2")}'; 
}) 
]]></xp:this.value> 
</xp:scriptBlock> 

Днем кодирования.

Смежные вопросы