Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/ant/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jsf Primefaces自动完成不传递&到完成方法_Jsf_Primefaces_Autocomplete - Fatal编程技术网

Jsf Primefaces自动完成不传递&到完成方法

Jsf Primefaces自动完成不传递&到完成方法,jsf,primefaces,autocomplete,Jsf,Primefaces,Autocomplete,我们使用的是Primefaces 2.2.1。 我们使用自动完成来显示数据库中的名称。有些名称中有&。例如:杰克和吉尔 当我们在autocomplete中键入&时,建议将以“&”前面的字符停止 姓名:杰克和吉尔,杰克,杰克和比尔,杰克和珍 杰克,当我们打字时,我们会在建议列表中找到上面所有的名字。 然而,当我们输入Jack&时,我们仍然得到相同的列表,并且没有缩小到 “杰克和吉尔”,“杰克和比尔”,“杰克和珍” 当我们调试传递给complete方法的内容时,我们注意到只传递了“&”之前的字符。例

我们使用的是Primefaces 2.2.1。 我们使用自动完成来显示数据库中的名称。有些名称中有&。例如:杰克和吉尔

当我们在autocomplete中键入&时,建议将以“&”前面的字符停止

姓名:杰克和吉尔,杰克,杰克和比尔,杰克和珍

杰克,当我们打字时,我们会在建议列表中找到上面所有的名字。 然而,当我们输入Jack&时,我们仍然得到相同的列表,并且没有缩小到 “杰克和吉尔”,“杰克和比尔”,“杰克和珍”

当我们调试传递给complete方法的内容时,我们注意到只传递了“&”之前的字符。例如:“杰克”

在“&”之后键入的任何内容(包括“&”本身)都不会传递给complete方法。我们从一个Primefaces论坛上发现可以使用转换器,但仍然没有用。请尽快提出建议,因为这是一个非常关键的问题,需要尽快解决

下面是bean代码

public List<String> complete(String nameQuery)
{ 
   List<String> names = new ArrayList<String>(“Jack & Jill”, “Jackie”, “Jack & Bill”, “Jack & Jen”);
   List<String> suggestedNames= new ArrayList<String>(); 

   for (String name : names) { 
      if (name.toLowerCase().trim().startsWith(nameQuery.toLowerCase().trim())) 
      { 
         suggestedNames.add(name.toUpperCase()); 
      } 
   } 
   return suggestedNames; 
} 
Xhtml代码


提前感谢。

尝试将onstart属性添加到p:autocomplete标记,该标记调用javascript函数对作为查询传递给complete方法的字符进行编码:

函数转义器请求{ request.term=encodeURIComponentrequest.term; }

来自:

这个解决方案对我来说很有用,它添加到了我的JSF页面中:

<script type="text/javascript">
    PrimeFaces.escapeRegExpOld = PrimeFaces.escapeRegExp;
    PrimeFaces.escapeRegExp = function (c){
        var t = PrimeFaces.escapeRegExpOld(c);
        t = t.replace('&amp;', '&amp;amp;');
        return t;
    }
</script>

我认为您应该发布自动完成bean代码,以便更好地了解您的问题。public List completeString nameQuery{List name=new ArrayList“Jack&Jill”、“Jackie”、“Jack&Bill”、“Jack&Jen”;List suggestedNames=new arrarylist;字符串名称:{if name.toLowerCase.trim.startsWithnameQuery.toLowerCase.trim{suggestedNames.addname.toUpperCase;}}返回suggestedNames;}Xhtml代码如果您通过在文章中插入代码来编辑文章,这将有助于阅读文章。将代码以更可读的格式添加到文章中。
<script type="text/javascript">
    PrimeFaces.escapeRegExpOld = PrimeFaces.escapeRegExp;
    PrimeFaces.escapeRegExp = function (c){
        var t = PrimeFaces.escapeRegExpOld(c);
        t = t.replace('&amp;', '&amp;amp;');
        return t;
    }
</script>