2013-10-16 34 views
1

我有一個應用程序基於Vaadin 7,現在我想加我的組件到CustomLayout問題是,CustomLayout忽略 - 模板(靜態HTML)文件頭部分,這樣描述忽略太有資源。靜態html文件不是Vaadin應用程序的一部分,它們是動態生成的。我怎麼可以加載JS和CSS文件(屬於靜態html)在客戶端無需註釋:Vaadin動態加載的JavaScript,CustomLayout

@JavaScript; @StyleSheet 

,並與JavaScript.execute接近()也不是好辦法。

回答

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?