出于某种原因,我无法获取我的代码来提取我正在调用的视图。更糟糕的是,我没有在我的XPage上收到任何类型的错误消息,当我点击它时,组合框只是空白。
我正在尝试提取一系列部门。名为(DepartmentLookup)的视图实际上包含大约135个条目。我想要第二列,其中包含部门名称。这是我的计算值代码:@DbColumn(["DomApps01/Hendricks", "aApplications/HCHPhoneBk.nsf"], "(DepartmentLookup)", 2)
我的组合框的xsp源代码在这里:
<xp:comboBox
id="department"
value="#{document1.department}"
style="width:180px"
rendered="#{javascript:document1.isEditable()}">
<xp:this.validators>
<xp:validateExpression
message="You must select a Department">
<xp:this.expression><![CDATA[#{javascript:value != "Select One"}]]></xp:this.expression>
</xp:validateExpression>
</xp:this.validators>
<xp:selectItem
itemLabel="Select One"
itemValue="Select One"
id="selectItem1">
</xp:selectItem>
<xp:selectItems
id="selectItems1">
<xp:this.value><![CDATA[#{javascript:
@DbColumn(["DomApps01/Hendricks", "aApplications/HCHPhoneBk.nsf"], "(DepartmentLookup)", 2)
}]]></xp:this.value>
</xp:selectItems>
</xp:comboBox>
答案 0 :(得分:1)
如果数据库或视图不可用,请使用此代码获取错误字符串结果:
<xp:selectItems
id="selectItems1">
<xp:this.value><![CDATA[#{javascript:
var db = session.getDatabase("DomApps01/Hendricks", "aApplications/HCHPhoneBk.nsf");
if (!db.isOpen()) {
return "Error reading database";
}
var result = @DbColumn(db, "(DepartmentLookup)", 2);
if (typeof result === 'undefined') {
return "Error reading view";
}
result
}]]></xp:this.value>
</xp:selectItems>
在我的测试中,@ DbColumn如果失败则不返回任何内容 - 不会抛出异常(因此,try-catch-block没有帮助)。这就是您没有收到错误消息的原因。
作为替代方案,您可以使用Java version of DbLookup & DbColumn, with cache, sort and unique and without 64K limit。