Vaadin dynamic loading JavaScript, CustomLayout

Vaadin dynamic loading JavaScript, CustomLayout

本文关键字:CustomLayout JavaScript loading dynamic Vaadin      更新时间:2023-09-26

我有一个基于 Vaadin 7 的应用程序,现在我想将我的组件添加到 CustomLayout 中,问题是 CustomLayout 忽略了模板(静态 html)文件的标头部分,因此那里描述的资源也被忽略了。静态html文件不是Vaadin应用程序的一部分,它们是动态生成的。如何在没有注释的情况下在客户端加载JS和CSS文件(属于静态html):

@JavaScript; @StyleSheet

而且使用 JavaScript.execute() 的方法也不是好方法。

为什么这些解决方案对你不利?根据我的经验,这些工作得很好。但是,还有另一种解决方案:只需在页面中包含外部javascript文件,扩展ApplicationServlet类,并覆盖writeAjaxPageHtmlVaadinScripts方法。

`@Override
protected void writeAjaxPageHtmlVaadinScripts(Window window, String themeName, Application application, BufferedWriter page, String appUrl, String themeUri, String appId, ServletRequest request) throws ServletException, IOException {
  page.write("<script type='"text/javascript'">'n");
  page.write("//<![CDATA['n");
  page.write("document.write('"<script language='javascript' src='" + appUrl + "/VAADIN/scripts/jquery/jquery-1.4.4.min.js'><''/script>'");'n");
  page.write("document.write('"<script language='javascript' src='" + appUrl + "/VAADIN/scripts/highcharts/highcharts.js'><''/script>'");'n");
  page.write("document.write('"<script language='javascript' src='" + appUrl + "/VAADIN/scripts/highcharts/modules/exporting.js'><''/script>'");'n");
  page.write("//]]>'n</script>'n");
  super.writeAjaxPageHtmlVaadinScripts(window, themeName, application,
      page, appUrl, themeUri, appId, request);
}

'

有关更多详细信息,请参阅这篇文章:如何将d3(javascript)添加到vaadin应用程序?