仅使用SSJS填充Dojo组合框并包含单独的itemLabel和itemValue

时间:2014-12-08 15:14:55

标签: xpages

我支持我的公司最老的和第一个XPages应用程序。该应用程序不使用Java任何东西,并使用SSJS的一切。我不想开始只为这一项任务使用java bean。

这个问题涉及java方法,我需要做同样的事情:Populating selectItems of the combobox (label, value) using a managed bean(虽然我知道这是更好的方法,我试图坚持已经建立的模式)

该应用将所有关键字加载到applicationScope中,然后在需要时使用它们。我正在尝试加载显示值并在存储时返回相关值。这类似于传统Notes多年来的表现。

我更改了applicationScope值以存储管道(|)之后的值,但我还没有弄清楚如何使用SSJS来使用该值。我开始怀疑它甚至是可能的。

我尝试使用核心组合框控件而不是Dojo组合框来生成我需要的代码。看起来你不能为标签和价值使用单独的“公式项”。有没有人想出这个解决方案,没有使用java集合。

3 个答案:

答案 0 :(得分:2)

您可以在SSJS中使用Java类javax.faces.model.SelectItem来填充selectItems:

    <xp:comboBox id="comboBox1">
        <xp:selectItems>
            <xp:this.value><![CDATA[#{javascript:
                var item1 = new javax.faces.model.SelectItem("Value1", "Label1");
                var item2 = new javax.faces.model.SelectItem("Value2", "Label2");
                [item1, item2]
            }]]></xp:this.value>
        </xp:selectItems>
        ...
    </xp:comboBox>

答案 1 :(得分:1)

您可以在SSJS中使用Java解决方案。您只需要var而不是new引用中的初始类名和完整的类名,因此java.util.ArrayList而不是ArrayList和javax.faces.model.SelectItem而不是SelectItem。见http://www-10.lotus.com/ldd/bpmpblog.nsf/dx/xpages-best-practice-computed-selection-lists?opendocument&comments

因此,您链接到转换为SSJS的StackOverflow问题中的代码应为:

var options = new java.util.ArrayList();

var option = new javax.faces.model.SelectItem();
option.setLabel("Here's a label");
option.setValue("Here's a value");

options.add(option);

return options;

答案 2 :(得分:0)

也许我错过了你的问题,因为我的回答相当简单,但是要使用JavaScript计算标签和值,请创建一个字符串的JavaScript数组,其中每个字符串的格式为“Label | Value”(垂直条是像Domino字段中的分隔符。)

霍华德