从服务器端调用javascript方法

时间:2014-11-07 07:07:58

标签: java javascript jsf primefaces

我想从服务器端执行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

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

使用jsf 2.1和primefaces 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
        }
    }

1 个答案:

答案 0 :(得分:2)

您可以尝试:

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)