在我的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”/>;
</h:selectOneRadio>;
dataTable包含a4j:commands,在某些IE版本中更改表内容后,无意中需要双击这些命令-我发现,执行以下Javascript代码(在IE的调试控制台上,更改表内容后)可以解决问题:
document.getElementById(<;dataTableClientId>;).focus()
我的问题是:在表内容发生更改后,如何实现javascript代码的自动执行
为了在之后执行JS代码<;f:ajax>已成功完成,以下内联解决方案将完成:
<;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>是更改我认为您最好使用它。。。另请参见我可以传递给f:ajax标记的event属性的值是什么