Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/425.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/jsf/5.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
Javascript jsf.ajax.request无法完全工作_Javascript_Jsf - Fatal编程技术网

Javascript jsf.ajax.request无法完全工作

Javascript jsf.ajax.request无法完全工作,javascript,jsf,Javascript,Jsf,我试图做一个自定义的自动完成框,但我有一些麻烦。现在我有一个输入,在keydown上调用这个函数 function pingAutoComplete(event) { console.log("pingAutoComlete Called"); window.clearTimeout(window.keyTimeout); //Wait 2 seconds before we attempt to pingAutoComplete incase user has

我试图做一个自定义的自动完成框,但我有一些麻烦。现在我有一个输入,在keydown上调用这个函数

 function pingAutoComplete(event)
 {
    console.log("pingAutoComlete Called");
    window.clearTimeout(window.keyTimeout);


     //Wait 2 seconds before we attempt to pingAutoComplete incase user has not finished typing
      window.keyTimeout = setTimeout(function() {
       jsf.ajax.request(event, "keydown", {execute:'searchTerm',render:'autoCompletePanel'})
       autoCompleteLayoutPanel.show();
       return false;
    }, 2000);
    return false;

 }
“自动完成”面板包含一组如下所示的选择

<h:selectOneListbox id="vehicleResult" title="Vehicles"
    value="#{searchBean.searchTerm}"
    converter="entityConverter"
    required="false"
    rendered="#{!searchBean.filterAutoComplete().isEmpty()}">

    <f:selectItems value="#{searchBean.filterAutoComplete()}"
        var="searchItem" itemValue="#{searchItem}"
        itemLabel="#{searchItem.displayString}"
        itemLabelEscaped="true" />
</h:selectOneListbox>


现在,当调用javascript时,它似乎正在访问后端的searchBean.filterAutoComplete(),但实际上它并没有更新gui中的选择列表。有人知道为什么吗?

您必须指定确切的客户端ID。这是生成的HTML元素的
ID
属性的值,而不是JSF组件本身的值。如果JSF组件放在
中,那么默认情况下,客户机ID将在其ID前面

因此,以下小组:

<h:form id="form">
    <h:panelGroup id="autoCompletePanel">


客户端ID将为
格式:autoCompletePanel
。您需要在
render
属性中精确指定该ID。同样的规则也适用于执行。

您必须指定确切的客户端ID。这是生成的HTML元素的
ID
属性的值,而不是JSF组件本身的值。如果JSF组件放在
中,那么默认情况下,客户机ID将在其ID前面

因此,以下小组:

<h:form id="form">
    <h:panelGroup id="autoCompletePanel">


客户端ID将为
格式:autoCompletePanel
。您需要在
render
属性中精确指定该ID。顺便说一下,同样的规则也适用于执行。

是的,我确实这样做了,但我试着简化一下表单。它实际上正在触及后端,因此呈现的代码似乎正在查找autocompletepanel。请尝试在将来不要过度简化代码,而是发布真正的工作代码。回到您的问题上来,客户端ID为
form:autoCompletePanel
的JSF组件本身没有
rendered
属性,对吗?很抱歉,我离开了这么长时间,开了一个又一个会议。不管怎样,我最后去了一家叫做primefaces的公司,让它工作。哦?如果您已经在使用PrimeFaces,为什么不使用它的
?是的,我确实这样做了,但我尝试为表单简化它一点。它实际上正在触及后端,因此呈现的代码似乎正在查找autocompletepanel。请尝试在将来不要过度简化代码,而是发布真正的工作代码。回到您的问题上来,客户端ID为
form:autoCompletePanel
的JSF组件本身没有
rendered
属性,对吗?很抱歉,我离开了这么长时间,开了一个又一个会议。不管怎样,我最后去了一家叫做primefaces的公司,让它工作。哦?如果您已经在使用PrimeFaces,为什么不使用它的