@dbcolumn in session.evaluate в xpages - PullRequest
       49

@dbcolumn in session.evaluate в xpages

2 голосов
/ 01 апреля 2012

Я пытаюсь выполнить этот код для списка, но он не работает, это дает мне ошибку 500. Если я непосредственно пишу @formula в списке, он работает нормально.

return session.evaluate("@DbColumn(@DbName(), \"viewName\", 1)").elementAt(0)

но если я напишу ниже код, он работает нормально.

return session.evaluate("@Unique").elementAt(0);

Я работаю в xpages на Lotus Notes 8.5.3

Ответы [ 3 ]

5 голосов
/ 01 апреля 2012

Вы получаете ошибку 500er, потому что параметр @DbColumn для SSJS имеет значение меньше, чем «исходная» @DbColumn-Version, которая будет выполнена, если вы используете метод оценки. Для XPages, опция для кэширования и класса была потеряна.

Это синтаксис для оператора вычисления:

@DbColumn( class : cache ; server : database ; view ; columnNumber )

Это синтаксис XPages:

@DbColumn( server : database , view , columnNumber );

И вы должны использовать собственный синтаксис Notes @Formula, например используйте точки с запятой вместо запятых.

1 голос
/ 02 апреля 2012

session.evaluate работает с оригинальным синтаксисом @Formula, а не с SSJS.

Поэтому используйте вместо него @DbColumn (""; @DbName; "view", column).

0 голосов
/ 05 апреля 2012

Вот решение: В SSJS вы можете напрямую кодировать следующее ...

@DbColumn(@DbName(),"viewName",1)

Если вы хотите сделать то же самое, используя session.Evaluate (), тогдаВы можете попробовать следующее.

//@DbColumn(@DbName(),"viewName",1) --> in SSJS
//@DbColumn( class : cache ; server : database ; view ; columnNumber ) --> in Formula using Evaluate

var colValues = "@DbColumn(\"\":\"\";" + @DbName() + ";\"viewName\";1)";

print ("colValues[0]" + colValues[0]); // will print @DbColumn( "":""; ServerName ; viewName; 1)
print ("colValues[1]" + colValues[1]); // will print @DbColumn( "":""; DatabaseName; viewName; 1)

return session.evaluate(colValues[1]) // It will return the expected value in listbox

Поскольку @DbName () будет возвращать как имя сервера, так и имя базы данных.Тогда как нам нужно только имя базы данных.Это только для текущего сервера.Для другого сервера нам нужно указать имя сервера.Я надеюсь, что это поможет ... !!!

...