繁体   English   中英

JSF 在 f:ajax 之后执行 javascript

[英]JSF execute javascript after f:ajax

在我的 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:commandLink s,在更改表内容后无意中需要在某些 IE 版本中双击 - 我发现,执行以下 Javascript 代码(在 IE 的调试控制台上,在表内容更改后)解决了这个问题:

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

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

为了在<f:ajax>成功完成后执行 JS 代码,下面的内联解决方案会做:

<f:ajax
    render="itemsDataTable" 
    onevent="function(data) { if (data.status === 'success') { 
        // Put your JS code here.
        document.getElementById('dataTableClientId').focus();
    }}" />

或者下面的外部函数解决方案(注意:不要把括号放在onevent ,只有函数名):

<f:ajax
    render="itemsDataTable" 
    onevent="scriptFunctionName" />

function scriptFunctionName(data) {
    if (data.status === 'success') { 
        // Put your JS code here.
        document.getElementById('dataTableClientId').focus();
    }
}

还可以看看这个答案: JSF 和 Jquery AJAX - 如何让它们一起工作?

另外,请仔细检查f:ajax event="click"的需求,因为<h:selectOneRadio>的默认事件是change ,我认为您最好使用它...另请参阅我可以将哪些值传递给事件f:ajax 标签的属性?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM