添加javascript / Jquery& Vaadin 7中的客户端代码

时间:2013-06-20 15:19:23

标签: java javascript jquery integration vaadin

我有3个问题:

  1. Vaadin中的每一个动作都会调用服务器。有没有办法避免每次操作调用服务器?比如在客户端有代码用于多次使用的特定操作?与CSValidation插件一样。

  2. 我想知道如何在Vaadin 7中添加Javascript / JQuery。在Vaadin 6中看起来很容易。但是,我无法让它在Vaadin 7中运行。我希望他们现在能让它更容易。谁能告诉我一些关于此的例子。如果是JQuery,它会对我有很大帮助。

  3. Javascript.getCurrent()执行( “”);

  4. '执行javascript'或'添加指定的脚本'到代码中。这有助于我解决第二个问题吗?

2 个答案:

答案 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

我希望这会有所帮助......

相关问题