rich:suggestionbox如何在用户中止选择时调用bean

时间:2014-09-18 09:08:48

标签: jsf richfaces

RichFaces的旧SuggestionBox组件(版本3.3 ...是的,我必须维护遗留代码,为我的命运哭泣)非常有用,但有一个缺点。

如果用户在输入组件中输入一些文本,然后单击除建议列表中的条目之外的其他位置,则保留部分填充的输入。它很丑陋,可能令人困惑,给人的印象就是当它不是时被选中。

在这种情况下,我希望单独调用bean,如果没有选择任何内容,则允许我删除文本。

示例代码:

<h:inputText id="selectorInput" value="#{backingBean.inputText}" label="Select something:" />

<rich:suggestionbox id="suggestion" for="selectorInput" suggestionAction="#{backingBean.resolveSuggestions}" var="sug">
    <a4j:support event="onselect" reRender="someForm" action="#{backingBean.select(sug)}" />
    <h:column>#{sug.name}</h:column>
</rich:suggestionbox>

我尝试添加a4j:支持h:inputText with event =&#34; onblur&#34;,但在 backingBean.select(sug)之前称为,并且无法知道如果选择了某种东西,那么它几乎是无用的。将其他事件添加到suggestionbox本身似乎根本不起作用,甚至打破暗示建议框。

还有其他办法吗?

1 个答案:

答案 0 :(得分:0)

支持JavaScript对象具有getSelectedItems()方法。如果没有选择任何内容,它将返回一个空数组。

要使用对象

document.getElementById(clientId).component