我正在尝试为列表框执行此代码但它不起作用,这给了我500的错误。如果我直接在列表框中写@formula它工作正常。
return session.evaluate("@DbColumn(@DbName(), \"viewName\", 1)").elementAt(0)
但如果我写下面的代码,它可以正常工作。
return session.evaluate("@Unique").elementAt(0);
我在Lotus Notes 8.5.3上使用xpages
答案 0 :(得分:5)
您收到500er错误,因为SSJS的@DbColumn的参数小于“原始”@DbColumn-Version,如果您使用的是evaluate方法,它将被执行。 对于XPages,缓存和类的选项丢失了。
这是evaluate语句的语法:
@DbColumn( class : cache ; server : database ; view ; columnNumber )
这是XPages语法:
@DbColumn( server : database , view , columnNumber );
你必须使用本机Notes @Formula语法,例如。用分号代替逗号。
答案 1 :(得分:1)
session.evaluate适用于原始的@Formula语法,而不适用于SSJS语法。
所以请改用@DbColumn(“”; @DbName;“view”,列)。
答案 2 :(得分:0)
以下是解决方案: 在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()将返回服务器名称和数据库名称。而我们只需要数据库名称。这仅适用于当前服务器。对于不同的服务器,我们需要指定服务器名称。我希望这会有所帮助...... !!!