JSF在f:ajax之后执行javascript
在我的JSF 2 web应用程序中,我使用以下代码根据selectedStatus显示和切换rich:dataTable的内容: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" />
<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();
}
}