我想从服务器端执行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
}
}
答案 0 :(得分:2)
您可以尝试:
String js="alert('Hello World!!')"; // write your javascript
RequestContext.getCurrentInstance().execute(js);
的Javadoc: