我有以下问题:
这是我的 xhtml 部分。
<h:panelGroup id="#{id}suggestionPanel" rendered="#{rendered}">
<a4j:jsFunction name="autocompleteHandler"
action="#{autocompleteBean.prepareAction(suggestionAction)}">
<a4j:actionparam name="param1" assignTo="#{searchString}"/>
</a4j:jsFunction>
...
<h:inputText value="#{searchString}"
rendered="#{validationId == null}"
id="#{id}search"
onkeyup="delayedHandler(300, this)"/>
此处给出了处理此问题的 javascript 方法:
var _timer = 0;
function delayedHandler(ms, thisElement)
{
if (_timer) window.clearTimeout(_timer);
_timer = window.setTimeout(function()
{
autocompleteHanlder(thisElement.value)
}, ms);
}
那么我有什么问题呢?
执行此代码时出现此错误:
Uncaught TypeError: Cannot read property 'action' of null framework.pack.js.xhtml:2791
A4J.Query framework.pack.js.xhtml:2791
A4J.AJAX.PrepareQuery framework.pack.js.xhtml:2562
A4J.AJAX.Submit framework.pack.js.xhtml:2592
autocompleteHandler
很酷的事情是,如果我的 javascript 没有像这样以延迟方式调用处理程序
function delayedHandler(ms, thisElement)
{
autocompleteHanlder(thisElement.value);
}
javascript 函数的延迟部分没有问题,因为我已经用一些警报对其进行了测试。
不知何故,由于这种延迟,它无法读取<a4j:jsFunction
.
任何人都知道如何解决这个问题?