2013-01-24 46 views
0

有一個與文本框關聯的jsf建議框。所有工作都很好,除了我無法排除已經選定的結果。關聯的文本框包含逗號分隔值。我還沒有找到任何方法可以顯示建議,不包括已經出現在文本框中的建議。我可以傳遞文本框的值 - 與建議ajax請求或任何其他想法?JSF豐富:建議框需要通過排除已經選擇的項目來過濾建議列表

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 
//.... 

} 
} 

該文本框和意見箱

<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> 

回答

0

JSF的XHTML部分你將不得不通過以排除他們選擇的值到服務器。也許你可以做一些JavaScript破解,但它不會更乾淨(請參閱使用SuggestObjects和onobjectchange)。

0

@Chris感謝您的回覆。

我終於找到即正被用來設置請求範圍,從而甚至要求通過javasript onchange事件是創造每豆請求方法調用bean的方法。在上面的例子中,建議框每次調用一個新對象,輸入文本的onchange每次都調用一個新對象。

我想出了一個解決方案是我設置的bean的作用域來「觀察」,使該視圖的bean對象保持不變,因此所有的請求可以共享的狀態。然後調用的inputText,其中更新與在inputText的最新值的bean場suggestionbox的onsubmit事件onchange事件。

<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"> 

希望它有幫助。