rich:autocomplete cachedAjax在前缀后触发

rich:autocomplete cachedAjax在前缀后触发,autocomplete,richfaces,Autocomplete,Richfaces,我试图使用cachedAjax模式下的rich:autocomplete组件从服务器获取一个短前缀后的列表,并在客户机上处理remaine autocomplete,但它在minChars参数后的每个字符后都会触发autocomplete方法 还有其他人有这个问题吗?或者我做错了什么? 我正在使用Richfaces 4.5.3.Final,下面列出了xhtml和bean上的函数: XHTML bean上的函数 public List<String> doAutoComplete(St

我试图使用cachedAjax模式下的rich:autocomplete组件从服务器获取一个短前缀后的列表,并在客户机上处理remaine autocomplete,但它在minChars参数后的每个字符后都会触发autocomplete方法

还有其他人有这个问题吗?或者我做错了什么? 我正在使用Richfaces 4.5.3.Final,下面列出了xhtml和bean上的函数:

XHTML

bean上的函数

public List<String> doAutoComplete(String pattern) throws SQLException {

    List<String> listaSaida = new ArrayList<String>();
    ...
    List<Pessoa> pessoas = PessoaDAO.findByNomeLike(connection, pattern);

    for (Pessoa pessoa : pessoas) {
        listaSaida.add(pessoa.getNome());
    }

    return listaSaida;
}

你在打什么?如果从abc到abcd,那么ajax请求不应该触发,JavaScript方法onChangeValue应该会发现abcd被缓存。当我键入abc到abcd或abcde时,ajax请求被触发,但当我键入更多字符(如abcdefgh)时,ajax不会触发。奇怪的是,没有一个固定的长度可以停止触发ajax请求。如果每次都从数据库中检索项目,那么查看代码,请求的触发速度可能会超过应用程序处理它们的速度。
public List<String> doAutoComplete(String pattern) throws SQLException {

    List<String> listaSaida = new ArrayList<String>();
    ...
    List<Pessoa> pessoas = PessoaDAO.findByNomeLike(connection, pattern);

    for (Pessoa pessoa : pessoas) {
        listaSaida.add(pessoa.getNome());
    }

    return listaSaida;
}