我有这样的标签:
<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中的文本时,更改不会立即开始,而是我必须在任何页面上单击才能在数据表中获得所需的结果。
有谁知道如何解决这个问题?
提前感谢。
答案 0 :(得分:3)
在HTML输入文本元素上,HTML DOM change
事件仅在元素的值已更改时触发和元素失去焦点(即blur
事件具有被解雇了)。单击页面上的任何其他位置或Tab键到下一个元素将触发blur
事件。因此,所描述的症状与指定的行为完全匹配。
您可能正在寻找keyup
或keypress
事件。请记住,这会在每次击键时触发Ajax请求,这不一定是便宜的。
请注意,此问题与JSF没有特别关系,因为它生成并发送到webbrowser只是简单的HTML / JS代码。