【问题标题】:p:autoComplete insert a new value to databasep:autoComplete 向数据库中插入一个新值
【发布时间】:2014-01-24 21:48:00
【问题描述】:

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

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

例子

存储在数据库中的标签:测试、示例

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

现在我想输入:

素面

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

我该怎么做?

问候 罢工

【问题讨论】:

  • 有趣。你想怎么做。添加按钮或事件(输入来自用户的输入)。基本上,您需要一个事件来捕获,该事件又会在数据库中执行插入查询。
  • 最好的事情是一个事件,但我也可以使用一个按钮,如果实现会更容易。好的,有一个将值推送到我的数据库的查询不是问题。我想知道,如何从该自动完成框中获取未知值。
  • 嗯未知值不会出现在自动完成中,这反过来你的数据库查询将给出否。元素返回为零。
  • 一种解决方案可能是获取发送到我的自动完成方法的值(例如,“public List autocomplete(StringSuggest){....}”)。但是我如何确定用户已完成输入?

标签: jsf primefaces autocomplete


【解决方案1】:

好的,我想出了一个解决方案,对我来说效果很好。

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>

List Handler,它也会创建一个新的Tag:

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

【讨论】:

    猜你喜欢
    • 2015-08-15
    • 1970-01-01
    • 2017-08-20
    • 2018-10-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多