xpage: document1 не определен - PullRequest
0 голосов
/ 30 ноября 2018

В источнике xpage, который я имею, RIGHT после открывающего тега view ... следующее:

<xp:this.data>
    <xp:dominoDocument
        formName="myform"
        var="document1"
    </xp:this.data>

Мне нужно иметь возможность получить значение любого поля для различных функций.В библиотеке 'Server JavaScript' у меня есть эта функция, в качестве теста:

function testThis(){
    debugger;
    var mystring = document1.getElementById("#{id:employeeTitle}");
    console.log(mystring);

(... ожидая, что все в элементе будет зарегистрировано в консоли.)

Вы можетевидите, у меня XPage привязан к DominoDocument с именем переменной 'document1'.

Функция вызывается с помощью кнопки и останавливается для отладчика ... так что я могу пройти через нее.

В отладчике Firefox это «Приостановлено на исключение», которое говорит:

ReferenceError: document1 is not defined

Я уверен, что на меня смотрят просто, но я просто не понимаю.Есть идеи?

Спасибо.

Ответы [ 2 ]

0 голосов
/ 30 ноября 2018

Вы получаете элемент DOM визуализированного поля employeeTitle на стороне клиента в своем коде CSJS с

var element = document.getElementById("#{id:employeeTitle}");

и значением содержимого с element.innerHTML.

Используйте document (точка входа на веб-страницу, загруженную в браузер) вместо document1 (обычно называется источником данных XPage на стороне сервера).

Ваша функцияtestThis () должен быть частью библиотеки XPage, Custom Control или SSJS.Это гарантирует, что #{id:employeeTitle} будет заменен реальным идентификатором DOM на сервере во время рендеринга.Если вы хотите поместить testThis () в библиотеку CSJS, вы должны передать идентификатор в качестве параметра функции, например

function testThis(id){
    var element = document.getElementById(id);
    ...

, и вызвать функцию в XPage, например,

testThis("#{id:employeeTitle}");
0 голосов
/ 30 ноября 2018

Я думаю, что вы смешиваете ServerSide JS и клиентскую часть.Отладчик Firefox знает только об отладке на стороне клиента (это код, который выполняется в браузере).Для отладки JS на стороне сервера я предлагаю плагин панели инструментов отладки, который вы можете найти в открытом NTF. https://www.openntf.org/main.nsf/project.xsp?r=project/XPage%20Debug%20Toolbar

Вы также можете записать в журнал сервера с помощью _dump, см. https://xcellerant.net/2014/10/15/using_dump_to_write_to_server_console/

Наконецобратите внимание в своем коде, что если SSJS, вы будете использовать document1.getItemValueString («что угодно») для доступа к значениям документа.Объект документа имеет тип NotesXSPDocument.Смотри https://www.ibm.com/support/knowledgecenter/en/SSVRGU_9.0.1/reference/r_wpdr_xsp_xspdocument_r.html

...