0

テキスト ボックスに関連付けられた jsf 提案ボックスがあります。既に選択されている結果を除外できないことを除いて、すべて正常に機能しています。関連するテキスト ボックスには、カンマ区切りの値が含まれています。テキストボックスに既に存在する提案を除いて提案を表示できるようにする方法が見つかりませんでした。提案 ajax リクエストまたはその他のアイデアと共にテキスト ボックスの値を渡すことはできますか?

public class ActionBean {

private String contacts;

public List<Contact> autocomplete(Object suggest) {

//....
// logic to get the list from DB based on suggestion but no data about existing selected values
//....

}
}

そのテキストボックスと提案ボックスのJSFのxhtml部分

<h:inputText value="#{actionBean.contacts}" styleClass="input mFields" id="text">
    <a4j:support event="onchange" action="#{someaction...}" return;" reRender="..."/>
</h:inputText>

<h:outputLabel value="Search and Select Name/Number or Enter Number. Use , for multiple entries"/>
    <rich:suggestionbox limitToList="true" id="suggestionBoxId" for="text" tokens=",[]" suggestionAction="#{actionBean.autocomplete}" var="result" fetchValue="#{result.number}" height="100" width="200" nothingLabel="No contacts found" columnClasses="center" usingSuggestObjects="true" >
        <h:column>
            <h:outputText value="#{result.name} #{result.lastName}" />
        </h:column>
        <h:column>
            <h:outputText value="#{result.number}" style="font-style:italic" />
        </h:column>
    </rich:suggestionbox>
4

2 に答える 2

0

それらを除外するには、選択した値をサーバーに渡す必要があります。JavaScript のハックを行うこともできますが、あまりクリーンではありません (usingSuggestObjects と onobjectchange を参照)。

于 2013-01-24T15:56:24.123 に答える
0

@クリス応答に感謝します。

つまり、使用されていたBeanがリクエストスコープに設定されていたため、javasriptを介してonchangeイベントを呼び出しても、Beanごとにリクエストごとにメソッド呼び出しが作成されていました。上記の場合、suggestionbox は毎回新しいオブジェクトを呼び出し、inputtext の onchange も毎回新しいオブジェクトを呼び出していました。

私が思いついた解決策は、Bean スコープを「ビュー」に設定して、そのビューの Bean オブジェクトが同じままであるため、すべてのリクエストが状態を共有できるようにすることでした。次に、提案ボックスの onsubmit イベントで inputtext の onchange イベントを呼び出し、inputtext の最新の値で Bean フィールドを更新します。

<rich:suggestionbox limitToList="true" id="suggestionBoxId" for="text" tokens=",[]" suggestionAction="#{actionBean.autocomplete}" var="result" fetchValue="#{result.number}" height="100" width="200" nothingLabel="No contacts found" columnClasses="center" usingSuggestObjects="true" onsubmite="call onchange event on inputext field">

それが役に立てば幸い。

于 2013-01-28T07:44:44.113 に答える