2014-01-23 244 views
0

我在我的項目中使用p:autoCompletemultiSelection = trueforceSelection = false。我用它來爲我的對象添加「標籤」。 這工作確實非常好,非常有用。p:autoComplete向數據庫插入新值

現在我有一個問題,我希望能夠解決它。存儲在數據庫

標籤:測試,例如

如果I型測試,或例如自動填充使一個建議。

現在我想輸入:

primefaces

未在數據庫中找到。現在我想將這個值從我的自動完成中推送到數據庫中。

我怎麼能這樣做?

問候 LStrike

+0

有趣。你想怎麼做。添加按鈕或事件(輸入來自用戶的輸入)。基本上你需要一個事件來捕獲哪個進程將執行插入查詢到數據庫中。 –

+0

最好的事情是一個事件,但如果實現會更容易,我也可以使用按鈕。好吧,有一個查詢,這將價值推到我的數據庫不是問題。我想知道,如何從該自動填充框中獲取未知值。 – LStrike

+0

嗯未知的值不會進入自動完成,反過來你的數據庫查詢會給沒有。元素返回爲零。 –

回答

0

OK,我提出了一個解決方案,這對我來說工作正常。

Primefaces自動完成:

<p:autoComplete id="mulitAutoSchlagWorte" 
          value="#{entityHandler.entity.tags}" 
          completeMethod="#{entityListHandler.completeAreaWithCreation}" 
          var="_tag" 
          itemLabel="#{_tag.value}" 
          itemValue="#{_tag}" 
          multiple="true" 
          size="300" 
          converter="#{entityConverter}"> 

       </p:autoComplete> 

列表處理器,這也創造了新的標籤:

public List<Tag> completeAreaWithCreation(String query) { 

    List<Tag> returnList = this.entityManager.createNamedQuery(Tag.NAMED_QUERY_GET_TAGS_BY_LIKE, Tag.class).setParameter("tag", query.toLowerCase().trim() + "%").getResultList(); 

    if(returnList.size() == 0){ 
     if(query.endsWith(" ")){ 
      entityHandler.create(); 
      entityHandler.getEntity().value(query.trim()); 
      entityHandler.save(); 
     } 
     returnList = completeAreaWithCreation(query.trim()); 
    } 

    return returnList; 
}