Добавить javascript / JQuery и клиентский код в Vaadin 7

У меня есть 3 вопроса:

  1. каждое действие в Vaadin вызывает сервер. есть ли способ избежать вызовов на сервер для каждого действия? например, наличие кода на стороне клиента для определенных действий, которые используются много раз? Как в csvalidation дополнения.

  2. Я хочу знать, как добавить Javascript/JQuery в Vaadin 7. Это кажется легким в Vaadin 6. Но я не мог заставить его работать в Vaadin 7. Я надеюсь, что они сделали бы это более легким сейчас. Может ли кто-нибудь показать мне несколько примеров относительно этого. Если это JQuery, это мне очень поможет.

  3. , а также

    Javascript.getCurrent().execute ("");

выполнить код JavaScript' или 'добавить указанный скрипт в код. Это поможет мне решить мой 2-й вопрос?

2 ответов


1)каждое действие в Vaadin вызывает сервер. Есть ли способ избежать вызовов на сервер для каждого действия? например, наличие кода на стороне клиента для определенных действий, которые используются много раз? Как в csvalidation дополнения.

Это зависит от кода на стороне клиента. Vaadin построен с моделью программирования на стороне сервера, но если вам нужно ограничить количество вызовов сервера, вам нужно сделать это самостоятельно. Vaadin 7 сделал это относительно проще включите сторонние библиотеки, как это было в Vaadin 6.

2) я хочу знать, как добавить Javascript/JQuery в Vaadin 7. Кажется легко в фреймворк 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.


Я не эксперт в рамках Vaadin...

Я могу сказать вам, что ваш вопрос № 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

да jQuery доступен с vaadin, см. форуме

Он говорит, что вы можете вызвать jQuery напрямую, как это $wnd.JQuery

Я надеюсь, что это поможет...