2012-07-13 73 views
0

我在使用itemtip選項時使用primefaces自動完成組件, 得到建議後我選擇了一個值作爲示例姓, 但我想在文本框中顯示玩家的姓和名,通過這種方式。自動完成在某些情況下不起作用

itemLabel="#{p.lastName} #{p.firstName} "與這兩個有一些空間。

<p:autoComplete id="watermark" value="#{backingBean.object}" 
          size="40" completeMethod="#{backingBean.completeholder}" 
          var="p" 
          itemLabel="#{p.lastName} #{p.firstName} " itemValue="#{p}" converter="player"> 
          <f:facet name="itemtip"> 
           <h:panelGrid columns="2" styleClass="cellsp-panel"> 
            <f:facet name="header"> 
             <p:graphicImage value="#{p.imagePath}" width="60" 
              height="60" /> 
            </f:facet> 

            <h:outputText value="LastName " style="font-weight:bold" /> 
            <h:outputText id="ln" value="#{p.lastName}" /> 

            <h:outputText value="FirstName " style="font-weight:bold" /> 
            <h:outputText id="fn" value="#{p.firstName}" /> 


           </h:panelGrid> 
          </f:facet> 
          <p:ajax event="itemSelect" update="e,c"> 
          </p:ajax> 

         </p:autoComplete> 

所以選擇一個建議後,它會完美地顯示玩家的姓氏和名字。 但是創建了一個問題 - 它會在自動完成文本框中創建一個空間,所以我需要使用 退格刪除此空間,以便我可以搜索以獲取建議。 我該如何克服這個問題?

  1. 我也是用的自動完成水印,當我使用單itemLabel像 itemLabel =「#{} p.lastName否則就無法在自動填充顯示水印。

3只適用。此外,當我使用無區分大小寫的輸入,以便用戶可以搜索時不區分大小寫, 一旦我得到任何建議,並仍然嘗試鍵入一些keyworks進一步過濾, 建議消失,它的作品,如果我去大小寫敏感默認方式。

  1. 用戶可以輸入玩家的姓氏或名字,但他仍然需要得到建議,我應該在下面的方法中做些什麼修改? 我已存儲的姓氏與第一個字母爲資本,所以我以這種方式使用toUpperCase()

    公開名單completePlayer(查詢字符串){
    清單建議=新的ArrayList();

    for(Player p : players) { 
         if(p.getlastName().startsWith(query.toUpperCase())) 
          suggestions.add(p); 
        } 
    
        return suggestions; 
    } 
    

我怎樣才能從這個問題解決?

回答

1

您的播放器比較解析爲這樣的:
Smith.startsWith( 「S」) - >真
Smith.startsWith( 「SM」) - >假

你想要的是:

if(p.getlastName().toUpperCase().startsWith(query.toUpperCase())) 

你自動完成的空間,從該行未來:

itemLabel="#{p.lastName} #{p.firstName} " itemValue="#{p}" converter="player"> 

你有一個空間後呃#{p.firstName}在itemLabel中,在您的結束報價之前。

至於水印,我不知道。我從來沒有嘗試過使用自動完成功能。你能否包含你的p:水印標籤,以便我們可以看到它的參考?

+0

我已經刪除了itemlabel之間的空間,現在我已經用這種方法嘗試過了。 itemLabel =「#{p.lastName}#{p.firstName}」itemValue =「#{p}」converter =「player」> 但它仍然在自動完成文本框中創建空間,因此我們需要使用退格刪除這個空間。這個空間現在是由於#{p.lastName}和#{p.firstName}之間有空間 「。實際上,我需要在選擇建議後姓氏 和名字之間的空格 因此,我們仍然可以如何刪除這個步驟/? – Java 2012-07-16 13:53:32

+0

噢,我想我明白你的問題是什麼,因爲當頁面渲染時,姓氏和名字是空白的,它只會在該字段中放置空間,我能想到的最簡單的解決方案是添加FullName getters和setter到你的支持bean,並在那裏進行名稱聚合而不是在前端,然後你將能夠控制何時/如果空間被添加。 – SteveS 2012-07-16 14:24:18

相關問題