是否可以在Vaadin框架内使用jQuery?
由于Vaadin是一个Java Web应用程序框架,因此可以在Vaadin Java代码中插入jQuery javascript片段吗?
是的。
像这样创建自己的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("\n"); super.writeAjaxPageHtmlVaadinScripts(window, themeName, application, page, appUrl, themeUri, appId, request); } }
然后替换web.xml中的Vaadin servlet(默认为com.vaadin.terminal.gwt.server.ApplicationServlet
):
com.example.MyApplicationServlet
然后,您可以通过调用以下命令在代码中进行jQuery调用:
MyApplication.getMainWindow().executeJavascript(jQueryString);
您可以使用@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...")
小心使用较大的脚本。 通过vaadin注释添加javascript的性能非常差。 最好手动在html标头中注入脚本。
还有一个针对ApplicationServlet的定制:
public class VaadinApplicationServlet extends ApplicationServlet { @Override protected void writeAjaxPageHtmlHeader(BufferedWriter page, String title, String themeUri, HttpServletRequest request) throws IOException { page.write(""); super.writeAjaxPageHtmlHeader(page, title, themeUri, request); } }