如何获取组合框的显示文本而不是别名?

Pra*_*kar 1 xpages xpages-ssjs

我有一个带有一些显示值和别名的组合框,在 SSJS 中,当我这样做时

getComponent("comboboxName").getValue()
Run Code Online (Sandbox Code Playgroud)

它返回别名值,这很好。但现在我想要组合框的显示文本而不是别名值,有什么方法可以得到它吗?

Knu*_*ann 5

定义一个 SSJS 函数getComponentLabel()

function getComponentLabel(componentId) {       
    var select = getComponent(componentId); 
    var value = select.getValue();
    if (value) {
        try {
            var list = select.getChildren();
            for (var i = 0; i < list.length; i++) { 
                if ((typeof list[i]).indexOf("SelectItems") > -1) {
                    items = list[i].getValue();
                    for (var k = 0; k < items.length; k++) {
                        if (items[k].getValue() === value) { 
                            return items[k].getLabel();
                        }
                    }
                } else if ((typeof list[i]).indexOf("SelectItem") > -1) {
                    if (list[i].getItemValue() === value) { 
                        return list[i].getItemLabel();
                    }
                }
            }   

        } catch (e) {       
        }
    }
    return value;
}
Run Code Online (Sandbox Code Playgroud)

SelectItems它在和中搜索组件的当前值SelectItem并返回相应的显示文本(=标签)。如果没有标签,则返回值。

现在,你得到的标签是

getComponentLabel("comboboxName")
Run Code Online (Sandbox Code Playgroud)

此代码适用于 XPage 控件:

  • 列表框
  • 组合框
  • 单选按钮组
  • Dojo 过滤选择

您可以保存getComponentLabel()函数保存在服务器 JavaScript 脚本库(例如 Utils.jss)中,并将其作为资源集成到您的 XPage 中。

这是我之前对类似问题的回答的更新版本。