2011-05-18 32 views
3

我正在尝试将一些js项目集成到我的vaadin应用程序中。我试着调用外部JavaScript代码的方法,只能在一些简单的/ javascript上成功。 我试过NativeJs LIB 和代码是:vaadin javascript

NativeJS nativeJScomponent = new NativeJS(); 
nativeJScomponent.setJavascript("alert('foo');"); 
nativeJScomponent.execute(); 
addComponent(nativeJScomponent); 

然而,当我用一些其他的代码,如:

String jsCode = "<div /><script type=\"text/javascript\">var d = new Date();" 
        + "var time = d.getHours();" 
        + "if (time < 10) {document.write(\"<b>Good morning</b>\");}</script>"; 
NativeJS nativeJScomponent = new NativeJS(); 
nativeJScomponent.setJavascript(jsCode); 
nativeJScomponent.execute(); 
addComponent(nativeJScomponent); 

它没有显示内容。

而且我还使用customelayout和标签来运行javascript。同样的结果出现了。

有没有什么方法将vaadin与js集成?

+1

我认为你正在将html与js混合在一起,而NativeJS可能只支持编译js。 – 2011-05-19 08:25:16

+0

是的,就像使用html和js的字段一样。我已经解决了这个问题,我使用coustomlayout来完成这个任务,并且需要将脚本标签写入applicationservlet类。 – Kyleinincubator 2011-05-23 19:43:55

回答

3
Window window = new Window(""); 
window.executeJavascript("javascript:testFunctionCall();"); 
1

运行源正确的方式做,这是落实AbstractJavaScriptComponent。这使您可以在项目中包含一个纯JavaScript脚本文件,并通过RPC调用和共享状态从服务器端控制该库。

一个简单的教程可以找到here和Vaadin的书更深入here。您还可以查看我的Vaadin addon的源代码,它将Javascript媒体库与Vaadin集成在一起。