Javascript jsf.ajax.request无法完全工作
我试图做一个自定义的自动完成框,但我有一些麻烦。现在我有一个输入,在keydown上调用这个函数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
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,为什么不使用它的
?