从服务器端调用javascript方法

Invoke javascript method from server side

本文关键字:方法 javascript 调用 服务器端      更新时间:2023-09-26

我想从服务器端执行一个javascript方法。在我的例子中,当我更改一个选项卡时,在托管bean中,我想调用javascript方法。有办法做到这一点吗?

我尝试使用RequestContext。但是,直到侦听器方法完成执行,它才会被调用。

RequestContext在当前ajax请求完成后执行javascript。我想在ajax请求开始时改进javascript方法。

javascript方法(我想调用它)是在客户端编写的。

通过http://metoojava.wordpress.com/2010/06/20/execute-javascript-from-java/和http://docs.oracle.com/javase/6/docs/technotes/guides/scripting/programmer_guide/index.html

但是没有找到解决这个问题的办法。

使用jsf2.1和素数面4.0。

我的代码是

XHTML

   <p:tabView id="detailsId" widgetVar="detailsVar" >
        <p:ajax event="tabChange"  listener="#{mywBean.onTabChange}"/>
        <p:tab title="Service">
        </p:tab>
        <p:tab title="Books">
        </p:tab>
    </p:tabView>
<script>
function myJavascriptMethod() {
     alert("Hello All..");
     // Some functionality
}
</script>

托管Bean

 public void onTabChange(TabChangeEvent event) {
        String tabId = event.getTab().getId();
        if(tabId.equalsIgnoreCase("Books")) {
           **need to call javascript method here**
          //Some Functionality
        }
    }

您可以尝试:

String js="alert('Hello World!!')"; // write your javascript
RequestContext.getCurrentInstance().execute(js);

Javadoc:

http://www.primefaces.org/docs/api/4.0/org/primefaces/context/RequestContext.html#execute(java.lang.String)