次の問題があります:
これは私の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
。
誰でもこれを解決する方法を知っていますか?