【问题标题】:Primefaces asynchronous autocomplete: reality checkPrimefaces 异步自动完成:现实检查
【发布时间】:2016-02-07 10:25:01
【问题描述】:

我正在尝试制作一个自动完成控件来处理多个数据源,当它们具有不同的访问时间时。我google了很多,但发现只有jquery或桌面解决方案,我无法适应jsf。基本上,我的想法是使用 completeMethod 生成第二个线程,并在完成后刷新自动完成列表并获得更多结果。

这是我的 xhtml 自动完成组件:

<p:autoComplete id="acSimple" value="#{testBean.txt1}" widgetVar="acSimple"
                completeMethod="#{testBean.completeText}" cache="true"/>

和completeMethod bean相关的行:

private String oldQuery = "";
private List<String> result;

public List<String> completeText(String query) throws Exception {
    if (!oldQuery.equals(query)) {
        oldQuery = query;
        result = bpp.runFastQuery(query);
        Thread thread = new Thread(new SlowTask(query, result));
        thread.start();
        return result;
    } else {
        return result;
    }
}

class SlowTask implements Runnable {
    String str;

    SlowTask(String query, List<String> result) {
        str = query;
        this.result = result;
    }

    List<String> result;

    public void run() {
        try {
            List<String> r = bpp.runSlowQuery(str);
            result.addAll(r);
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
}

我还尝试在较慢的线程完成时运行PF('acSimple').search(txt1),无论是从客户端还是从bean,都使用RequestContext.getCurrentInstance().update(":form1:acSimple");,但这也没有帮助我,它只是更新表单而不加载新数据.

如果有可能在这里实现我想要的?

【问题讨论】:

  • 我的问题更具体,尽管答案相同,但现在谷歌搜索“async primefaces autocomplete”也会产生相关结果。
  • 我认为你是对的它可能会提供额外的帮助,因为删除 cache attr 也会影响进程。我将删除标志 :)

标签: jsf primefaces autocomplete


【解决方案1】:

我认为你的代码可以参考这个:https://stackoverflow.com/a/17554922/1460591

我认为你的运行方法应该是这样的:

public void run() {
        try {
            List<String> r = bpp.runSlowQuery(str);
            result.addAll(r);
            RequestContext.getCurrentInstance().update("form1:acSimple");
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    } 

【讨论】:

  • 这适用于cache="false",谢谢!
猜你喜欢
  • 1970-01-01
  • 2015-06-14
  • 2014-04-11
  • 1970-01-01
  • 1970-01-01
  • 2016-06-23
  • 2016-04-30
  • 2013-02-13
  • 1970-01-01
相关资源
最近更新 更多