我有一个基于Vaadin 7的应用程序,现在我想将我的组件添加到CustomLayout中,问题是CustomLayout忽略 - 模板(静态html)文件的标题部分,所以那里描述的资源也被忽略了。静态html文件不是Vaadin应用程序的一部分,它们是动态生成的。如何在没有注释的情况下在客户端加载JS和CSS文件(属于静态html):
@JavaScript; @StyleSheet
并且使用JavaScript.execute()方法也不是好方法。
答案 0 :(得分:2)
为什么这些解决方案对您不利?根据我的经验,这些工作很好。 但是,还有另一种解决方案:只需在页面中包含一个外部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);
}
`
有关详情,请参阅此帖子:How to add d3 (javascript) to a vaadin application?