Можно ли использовать jQuery внутри фреймворка Vaadin? - PullRequest
14 голосов
/ 16 февраля 2012

Поскольку Vaadin - это инфраструктура веб-приложений Java, можно ли вставить фрагмент jQuery javascript в код Vaadin Java?

Ответы [ 3 ]

10 голосов
/ 16 февраля 2012

Да, это так.

Создайте свой собственный расширяемый класс ApplicationServlet, например:

public class MyApplicationServlet extends ApplicationServlet {

    @Override
    protected void writeAjaxPageHtmlVaadinScripts(Window window,
            String themeName, Application application, BufferedWriter page,
            String appUrl, String themeUri, String appId,
            HttpServletRequest request) throws ServletException, IOException {

        page.write("<script type=\"text/javascript\">\n");
        page.write("//<![CDATA[\n");
        page.write("document.write(\"<script language='javascript' src='./jquery/jquery-1.4.4.min.js'><\\/script>\");\n");
        page.write("//]]>\n</script>\n");

        super.writeAjaxPageHtmlVaadinScripts(window, themeName, application,
            page, appUrl, themeUri, appId, request);
    }
}

Затем замените сервлет Vaadin в вашем файле web.xml (по умолчанию com.vaadin.terminal.gwt.server.ApplicationServlet):

<servlet-class>com.example.MyApplicationServlet</servlet-class>

Затем вы можете делать вызовы jQuery в своем коде, вызывая:

MyApplication.getMainWindow().executeJavascript(jQueryString);
5 голосов
/ 06 августа 2014

Вы можете использовать аннотации @JavaScript и @StyleSheet

@StyleSheet({
                /*
                 * JQuery UI
                 */
                "vaadin://jquery/jquery-ui-1.9.2.custom/css/ui-darkness/jquery-ui-1.9.2.custom.min.css",
})

@JavaScript({   
                /*
                 * JQuery
                 */
                "vaadin://jquery/jquery-1.11.1.min.js",

                /*
                 * JQuery UI 
                 */
                "vaadin://jquery/jquery-ui-1.9.2.custom/js/jquery-ui-1.9.2.custom.min.js",
})

public class MyUI extends UI {
 ...
}

Для исполнения:

JavaScript.getCurrent().execute("...javascript code here...")

Будьте осторожны с большими сценариями. Добавление javascript через аннотацию vaadin имеет очень низкую производительность. Лучше добавить скрипт в заголовок html вручную.

3 голосов
/ 22 августа 2012

Еще одна настройка для ApplicationServlet:

public class VaadinApplicationServlet extends ApplicationServlet {

    @Override
    protected void writeAjaxPageHtmlHeader(BufferedWriter page, String title, String themeUri, HttpServletRequest request) throws IOException {
        page.write("<script language='javascript' src='http://code.jquery.com/jquery-1.8.0.min.js'></script>");
        super.writeAjaxPageHtmlHeader(page, title, themeUri, request);
    }

}
...