最簡單的方法,包括外部JavaScript文件到Vaadin應用是重寫Application#writeAjaxPageHtmlVaadinScripts
方法。
撥叫Vaadin的服務器端代碼中的JavaScript函數,調用Window#executeJavascript
@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='" + appUrl + "/VAADIN/scripts/example.js'><\\/script>\");\n");
page.write("//]]>\n</script>\n");
super.writeAjaxPageHtmlVaadinScripts(window, themeName, application,
page, appUrl, themeUri, appId, request);
}
注:我從來沒有使用Vaadin作爲Portlet的,但咋一看認爲,這應該工作正常。
但是,這種方法相當簡單,只適用於快速入侵/概念證明:如果您想要更復雜的東西,那麼開發自己的Vaadin小部件是正確的方法。它爲您提供GWT和JSNI的強大功能,併爲您提供更精細的控制:請參閱The Book Of Vaadin瞭解更多詳情。
您的Java應用程序在同一頁上是一個小程序嗎? – Thilo 2012-07-20 06:45:27
@Thilo它更多一點,它是一個具有嵌入式瀏覽器的Portlet,瀏覽器實際上加載了HTML頁面 – Kiesa 2012-07-20 06:59:54
帶嵌入式瀏覽器的portlet?你的意思是一個iframe(由訪問該portlet的瀏覽器加載)? – Thilo 2012-07-20 07:06:01