p:autoComplete将新值插入数据库

时间:2014-01-23 07:25:12

标签: jsf primefaces autocomplete

我在项目中使用p:autoComplete multiSelection = trueforceSelection = false。我用它来为我的对象添加“标签”。 这确实非常好,非常有用。

现在我有了一个问题,我希望有可能解决它。

实施例

存储在数据库中的标签:test,example

如果我输入测试或示例,自动填充会提出建议。

现在我想输入:

primefaces

在db中找不到。现在我想将此值从我的自动完成功能推送到数据库中。

我该怎么做?

此致 LStrike

1 个答案:

答案 0 :(得分:0)

好的,我制定了一个解决方案,对我来说很好。

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