我的@DbColumn有什么不对吗?

时间:2014-01-08 16:39:31

标签: xpages

出于某种原因,我无法获取我的代码来提取我正在调用的视图。更糟糕的是,我没有在我的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>

1 个答案:

答案 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