2

我正在尝试为列表框执行此代码,但它不起作用,这给了我错误 500。如果我直接在列表框中编写 @formula 它工作正常。

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

但如果我写下面的代码它工作正常。

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

我在 Lotus Notes 8.5.3 上的 xpages 中工作

4

3 回答 3

5

您收到 500er 错误,因为 SSJS 的 @DbColumn 的参数小于“原始”@DbColumn-Version 如果您使用评估方法将执行该参数。对于 XPages,缓存和类的选项丢失了。

这是评估语句的语法:

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

这是 XPage 语法:

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

而且您必须使用原生 Notes @Formula 语法,fe 使用分号而不是逗号。

于 2012-04-01T07:43:45.097 回答
1

session.evaluate 与原始 @Formula 语法一起使用,而不是与 SSJS 一起使用。

所以请改用@DbColumn(""; @DbName; "view", column)。

于 2012-04-02T13:49:57.460 回答
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() 将返回服务器名称和数据库名称。而我们只需要数据库名称。这仅适用于当前服务器。对于不同的服务器,我们需要指定服务器名称。我希望这个能帮上忙...!!!

于 2012-04-05T12:15:50.583 回答