2016-12-20 33 views
0

我有一個maxResultmoreText屬性的自動完成。PrimeFaces autoComplete用moreText展開maxResults

XHTML

<p:autoComplete maxResults="50" moreText="show more results" ...> 
    <p:ajax event="moreText" listener="#{bean.onMoreText} /> 
</p:autoComplete 

public void onMoreText(AjaxBehaviourEvent event) { 
    AutoComplete ac = (AutoComplete)event.getSource(); 
    ac.setMaxResults(ac.getMaxResults() + 50); 
} 

我要的是結果列表展開額外的50行。它這樣工作,但我的問題是,點擊moreText行後隱藏結果列表。當我再次搜索時,我會得到一個包含100,150個結果的結果列表。

我怎樣才能achive的結果列表點擊後,立即展開對show more results

+0

也許在ajax調用假的一個點擊下拉? – Kukeltje

+0

我沒有這個自動完成的下拉按鈕 –

+0

然後嘗試僞造一個輸入點擊...對不起... – Kukeltje

回答

0

我發現它通過將此代碼

<p:autoComplete widgetVar="widgetVarName" completeMethod="#{bean.complete}"> 
    <p:ajax event="moreText" listener="#{bean.onMoreText}" /> 
</p:autoComplete> 

public List<ResultType> complete(String qry) { 
    setQryString(qry); 
    // code to get results; 
} 

public void onMoreText(javax.faces.event.AjaxBehaviorEvent event) { 
    org.primefaces.component.autocomplete.AutoComplete ac = (AutoComplete) event.getSource(); 
    ac.setMaxResults(ac.getMaxResults() + 30); 
    executeJS("PF('widgetVarName').search('" + getQryString() + "')"); 
} 

public void executeJS(String source) { 
    org.primefaces.context.RequestContext.getCurrentInstance().execute(source); 
} 
符合我的需求的解決方案

現在發生的事情是,你點擊後在建議列表隱藏的moreText行上,maxResults得到增加,並且一個新的搜索以用於completeMethod的qryString開始。

如果有人有更好的解決方案隨時與我們分享,因爲我目前的解決方案是一個可怕的解決方法,調用一個新的數據庫選擇已經傳輸的數據。