JSF在f:ajax之后执行javascript

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

<h:selectOneRadio id=“statusSelection”value=“#{backingBean.selectedStatus}”style=“宽度:自动;浮动:左;”;
<f:选择Item itemValue=“AVAILABLE”itemLabel=“AVAILABLE”/>
<f:选择Item itemValue=“INACTIVE”itemLabel=“INACTIVE”/>
<f:ajax render=“itemsDataTable”execute=“#{backingBean.sortbytel('ascending')}”/>
<f:ajax render=“itemsdataable”event=“click”/>
&lt/h:selectOneRadio>

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

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

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

为了在之后执行JS代码<f:ajax&gt已成功完成,以下内联解决方案将完成:

<f:ajax
render=“itemsdataable”
onevent=“函数(数据){if(data.status=='success'){
//把你的JS代码放在这里。
document.getElementById('dataTableClientId').focus();
}}“/>

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

<f:ajax
render=“itemsdataable”
onevent=“scriptFunctionName”/>

函数脚本函数名(数据){
如果(data.status=='success'){
//把你的JS代码放在这里。
document.getElementById('dataTableClientId').focus();
}
}

还要看看这个答案:JSF和jQueryAjax——我如何让它们一起工作

另外,在f:ajax中仔细检查event=“click”的需要,因为中的默认事件<h:selectOneRadio&gt是更改我认为您最好使用它。。。另请参见我可以传递给f:ajax标记的event属性的值是什么

发表评论