0

Vaadin ポートレットから JavaScript 関数を呼び出そうとしています。

私のプロジェクトにHTMLファイルの魔女があるとしましょう。

ホームページ.html

<html>  
   ...  
   <script type="text/javascript">  
   ...  
   function foo(String msg)   
   {  
      alert(msg);  
   }  
   ...  
  </script>  
   ...  
</html>  

Vaadin 埋め込みブラウザ経由でポートレットに埋め込まれたページ

Java アプリケーションから関数 foo(String msg) を呼び出す方法

私は、homepage.html ファイルをインポート/読み取り、それを呼び出す必要がありますか?

4

3 に答える 3

1

Vaadin アプリケーションに外部 JavaScript ファイルを含める最も簡単な方法は、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);
}

NB : Vaadin をポートレットとして使用したことはありませんが、ざっと見てみると、これは問題なく動作するはずです。

ただし、このアプローチはかなり初歩的であり、簡単なハック/概念実証にのみ適しています。より洗練されたものが必要な場合は、独自の Vaadin ウィジェットを開発するのが正しいアプローチです。これにより、GWT と JSNI のパワーが得られ、より細かい制御が可能になります。詳細については、 The Book Of Vaadinを参照してください。

于 2012-07-20T08:30:41.423 に答える
1

まず、スクリプト本体を取得する必要があります。javax.script.ScriptEngineManager次に、問題を解決するためにユーザーを使用できますjavax.script.*
疑似コード

import javax.script.*;
ScriptEngine engine = 
            new ScriptEngineManager().getEngineByName("javascript");
String script = getScript(path_to_html);
            engine.eval(script);
于 2012-07-20T06:51:25.487 に答える
0

次のリンクを参照してください。これらは、やりたいことを行うための API を提供します。

http://www.ibm.com/developerworks/java/library/j-5things9/index.html

http://metoojava.wordpress.com/2010/06/20/execute-javascript-from-java/

于 2012-07-20T06:46:55.323 に答える