jsf f:ajax不会立即渲染

时间:2011-03-21 18:27:13

标签: java ajax jsf-2

我有这样的标签:

<h:inputText size="30" immediate="true">
   <f:ajax event="change" listener="#{someMethod}" render="someDataTable"/>
</h:inputText>

我有这样的数据表:

<h:dataTable value="#{someList}" var="anyVar" id="someDataTable">some things
</h:dataTable>

当我更改inputText中的文本时,更改不会立即开始,而是我必须在任何页面上单击才能在数据表中获得所需的结果。

有谁知道如何解决这个问题?

提前感谢。

1 个答案:

答案 0 :(得分:3)

在HTML输入文本元素上,HTML DOM change事件仅在元素的值已更改时触发元素失去焦点(即blur事件具有被解雇了)。单击页面上的任何其他位置或Tab键到下一个元素将触发blur事件。因此,所描述的症状与指定的行为完全匹配。

您可能正在寻找keyupkeypress事件。请记住,这会在每次击键时触发Ajax请求,这不一定是便宜的。

请注意,此问题与JSF没有特别关系,因为它生成并发送到webbrowser只是简单的HTML / JS代码。