遍历代理列表会出错

时间:2014-04-11 18:21:09

标签: javascript xpages agent

我在一个操作按钮上有这个代码,该按钮应该只运行代理并禁用所有已安排的代理:

   var agentList:Array = database.getAgents();
   3: for (var n=0 ; n < agentList.length; ++n ){
   4:   var name:string = agentList[n];
   5:   dBar.info(name,"Agent Name ");
   6:   var ag:NotesAgent = database.getAgent(name);
   7:   dBar.info(ag.getName());
   8:   if (ag.isEnabled()){
   9:       dBar.info(ag.getName(),"Is Enabled ");
  10:       ag.isEnabled() = false;
  11:   }
  12: }

问题在于,当我运行它时,我收到此错误:

执行JavaScript动作表达式时出错 脚本解释器错误,line = 6,col = 38:[TypeError]方法NotesDatabase.getAgent(lotus.domino.local.Agent)未找到,或非法参数

我从dBar知道这个名字实际上是列表中第一个代理的名称,是一个字符串。但似乎它将名称字符串视为lotus.domino.local.agent。

我错过了一些非常明显的东西吗?我有Manager访问数据库,甚至也设置了对Manager的最大Internet访问权限。

4 个答案:

答案 0 :(得分:3)

database.getAgents()会返回代理的列表,而不是代理名称列表。通过强制namestring,您可能会说服调试工具栏告诉您它是一个字符串,但它不应该。

试试这个:

var agentList = database.getAgents();
for (var n = 0; n < agentList.length; n++) {
    var eachAgent = agentList[n];
    if (eachAgent.isEnabled() {
        dBar.info(eachAgent.getName(), "Is Enabled");
        eachAgent.setEnabled(false);
    }
}

请特别注意在setEnabled()的最后一行替换if ...

答案 1 :(得分:1)

在LotusScript语言中,Notesdatabase.Agents返回 NotesAgent对象的数组。

我从未在SSJS中尝试过,但是SSJS Domino Designer帮助可以说明database.getAgents()方法(参见 IBM Domino Designer XPages参考&gt; Domino&gt; NotesDatabase(JavaScript)):

  

<强>语法
  getAgents():java.util.Vector

     

<强>用法   返回向量的元素是NotesAgent类型

在后面的示例中,java迭代器用于遍历返回的代理对象列表(看起来与您的任务完全相同):

var agents = database.getAgents().iterator();
var list = "";
while (agents.hasNext()) {
    list = list + agents.next().getName() + "\n";
}
return list

Designer帮助并不是那么糟糕,真的;)

答案 2 :(得分:0)

@BillF:在@TimTripcony的回答中提到您的意见:

a)LotusScript的语言结构无法与SSJS的语言结构进行比较:LS与VisualBasic相近,允许读/写属性,而SSJS与Java有更密切的关系,我们通常有单独的方法用于阅读和更改属性。

b)我认为你对通过http允许操作设计元素的方法表示怀疑是正确的。一种可能的方法是编写服务器端LS代理来执行您的任务,然后可以从您的SSJS代码触发该任务。可能需要使用sessionAsSigner才能正确触发代理,当然您需要确保只有管理员才能这样做。

答案 3 :(得分:0)

如果Tim写道,您需要设置ACL最大Internet名称和密码至少设置为Designer,否则会失败。

Internet maximum security level

相关问题