JSF在f:ajax之后执行javascript

JSF在f:ajax之后执行javascript,javascript,ajax,jsf,Javascript,Ajax,Jsf,在我的JSF 2 web应用程序中,我使用以下代码根据selectedStatus显示和切换rich:dataTable的内容: <h:selectOneRadio id="statusSelection" value="#{backingBean.selectedStatus}" style="width:auto; float:left;"> <f:selectItem itemValue="AVAILABLE" itemLabel="Available" />

在我的JSF 2 web应用程序中,我使用以下代码根据selectedStatus显示和切换rich:dataTable的内容:

<h:selectOneRadio id="statusSelection" value="#{backingBean.selectedStatus}" style="width:auto; float:left;">
  <f:selectItem itemValue="AVAILABLE" itemLabel="Available" />
  <f:selectItem itemValue="INACTIVE" itemLabel="Inactive" />
  <f:ajax render="itemsDataTable" execute="#{backingBean.sortByTitel('ascending')}" />
  <f:ajax render="itemsDataTable" event="click" />
</h:selectOneRadio>

dataTable包含a4j:commands,在某些IE版本中更改表内容后,无意中需要双击这些命令-我发现,执行以下Javascript代码(在IE的调试控制台上,更改表内容后)可以解决问题:

document.getElementById(<dataTableClientId>).focus()
document.getElementById().focus()

我的问题是:在表内容更改后,如何实现javascript代码的自动执行?

为了在
成功完成后执行JS代码,以下内联解决方案将执行:


或以下外部函数解决方案(注意:不要在
onevent
中插入括号,只插入函数名称):


再看看这个答案:


另外,再次检查
f:ajax
event=“click”
的需要,因为
中的默认事件是
change
,我认为您最好使用它。。。另请参见

您能做一个测试吗?去掉我试过了,结果:如果我去掉这个标签,firefox中的一切都很好,但在IE版本中,情况会变得更糟:切换表格内容不起作用,表格通过单击错误的单选按钮进行切换,……当您使用h:selectOneRadio时,尝试将事件更改为onchange而不是click。单击事件发生在您在“选择”对话框中选择选项之前。
function scriptFunctionName(data) {
    if (data.status === 'success') { 
        // Put your JS code here.
        document.getElementById('dataTableClientId').focus();
    }
}