XPages组合框 - 设置默认值

3

我有一个下拉框,其值是从一个托管bean中获取的,如下所示:

keywordlist.setConnDB("jdbc:sqlserver://xx.xx.x.xx:1433;DatabaseName=xxx");
keywordlist.setConnUserName("xxx");
keywordlist.setConnPassword("xxx");
keywordlist.setSQLQuery("SELECT DisplayText as Keyword From Glossary WHERE  SUBSTRING(DisplayText, 1, 2)= 'RV'");
keywordlist.keywords;

我希望能够将默认值设置为“--- 请选择 ---”,但无论我怎么做,关键词列表总是选择返回的第一个关键词作为默认值。
非常感谢您的任何帮助。
谢谢,
3个回答

2

在第一个位置添加另一个键值对,类型为“公式项”,其SSJS返回值如下:

"-- Select --|"

注意管道符!它应该显示在第一个位置,并且默认为空,因为"empty"是默认值。如果没有,默认值,则将“别名”(管道符后面的值)设置为您可以定义为组合项默认值属性的内容。


谢谢Oliver。这给了我与之前相同的结果。即,“--选择--”出现在下拉列表的第一项,但在查看页面时,默认选定的项目是bean返回的关键字列表中返回的第一项。我尝试过使用别名和不使用别名(将默认值设置为别名)。 - Dan Soares
Oliver,我搞定了。问题出在我将字段绑定到会话范围而不是文档数据源上。由于某种原因,这导致它失败了。现在它完美地运行着。 - Dan Soares

1

基本上,以下模式可以作为此类组合框的起点:

    <xp:comboBox
        id="comboBox1"
        defaultValue=""
        value="#{document1.someField}">
        <xp:selectItem
            itemLabel="--- Select ---"
            itemValue=""></xp:selectItem>
        <xp:selectItems>
            <xp:this.value><![CDATA[#{javascript:
            // Your SSJS code...
            // Should return some kind of list...
            return items;
}]]></xp:this.value>
        </xp:selectItems>
    </xp:comboBox>

或者,您可以从Java bean中获取关键字值:

        <xp:selectItems value=#{yourBean.yourValue}></xp:selectItems>

然而,返回一个列表值是很重要的。它可能还具有“标签|值”格式。


谢谢Serdar。我找到了问题所在。Oliver的解决方案与你的非常相似。 - Dan Soares

1
可能是因为您直接绑定到了Bean上。您可能需要将该值添加到关键字列表中。我认为在NotesIn9节目中有一个例子:http://notesin9.com/index.php/2014/03/13/notesin9-138-xpages-combobox-improvements/ 我不确定。如果Java代码中没有默认值,您可以看看如何实现。
试试这个。如果根本不起作用,则可能不是直接将组合框绑定到Bean上。也许将它绑定到viewScope变量上...因为它可以是任何内容,所以它会取一个空白...然后您只需要在onChange事件或其他事件中将viewScope变量的值移回到您的Bean中。
只是一个快速想法...

谢谢David。我已经搞定了。请看我回复Oliver的内容。 - Dan Soares

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接