我有3个问题:
Vaadin中的每一个动作都会调用服务器。有没有办法避免每次操作调用服务器?比如在客户端有代码用于多次使用的特定操作?与CSValidation插件一样。
我想知道如何在Vaadin 7中添加Javascript / JQuery。在Vaadin 6中看起来很容易。但是,我无法让它在Vaadin 7中运行。我希望他们现在能让它更容易。谁能告诉我一些关于此的例子。如果是JQuery,它会对我有很大帮助。
还
Javascript.getCurrent()执行( “”);
'执行javascript'或'添加指定的脚本'到代码中。这有助于我解决第二个问题吗?
答案 0 :(得分:16)
1)Vaadin中的每一个动作都会调用服务器。有没有办法避免为每个操作调用服务器?比如在客户端有代码用于多次使用的特定操作?就像在CSValidation插件中一样。
这取决于客户端代码。 Vaadin是使用服务器端编程模型构建的,但如果您需要限制服务器调用量,则需要自己完成。 Vaadin 7使得包含第三方库变得相对容易,就像在Vaadin 6中一样。
2)我想知道如何在Vaadin 7中添加Javascript / JQuery。看起来很简单 在Vaadin 6.但是,我无法让它在Vaadin 7工作。我希望他们 会让它变得更加轻松。谁能告诉我一些例子 对此。如果是JQuery,它会对我有很大的帮助。
这里有一个很好的教程,介绍如何将jQuery与Vaadin 7集成:http://java.dzone.com/articles/integrating-html-and-0
它主要是创建一个JavascriptExtension类,这是解决方案的主要部分:
@JavaScript({ "https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.js" })
public class JavascriptJQueryExtension extends AbstractJavaScriptExtension {
... // Please see the link above for an example of implementation
}
路径可以是URL或jQuery库的内部路径。
3)'执行javascript'或'添加指定的脚本'到代码中。
将执行以下代码段,如“Vaadin 7书”(https://vaadin.com/book/vaadin7/-/page/advanced.javascript.html)中所述
// Shorthand
JavaScript.getCurrent().execute("alert('Hello')");
JavaScript在当前的服务器请求之后执行 已处理的退货(...)
我建议你好好看看Vaadin书。它包含许多重要信息,通常有助于解决使用Vaadin时出现的大多数问题。
答案 1 :(得分:3)
我不是Vaadin Framework的专家......
我可以告诉你,你的问题3是通过那个运行JavaScript命令..
你也可以通过那个运行jQuery命令..
但为此你必须在页面中包含 jQuery 。
问题1:我可以说它是可能的,因为Vaadin具有覆盖功能的功能..JavaScript.getCurrent().addFunction("com.example.foo.myfunc",
new JavaScriptFunction() {
@Override
public void call(JSONArray arguments) throws JSONException {
Notification.show("Received call");
}
});
Link link = new Link("Send Message", new ExternalResource(
"javascript:com.example.foo.myfunc()"));
现在缺少支持代码,您必须确定在每个操作上调用服务器的实际插件的功能。 确保你覆盖了这个功能..你需要在某个时候使用这个功能..所以不要覆盖实际需要的功能....
问题2,
是的,vQuery可以使用vaadin,请参考forum
它说你可以直接调用jQuery,如$wnd.JQuery
我希望这会有所帮助......