Invient Charts(https://vaadin.com/directory#addon/invient-charts)などの特定のVaadinアドオンを操作するには、javascriptライブラリを含める必要があります。
Vaadinアプリケーション用のカスタムサーブレットを作成せずにこれを行うにはどうすればよいですか?
Invient Charts(https://vaadin.com/directory#addon/invient-charts)などの特定のVaadinアドオンを操作するには、javascriptライブラリを含める必要があります。
Vaadinアプリケーション用のカスタムサーブレットを作成せずにこれを行うにはどうすればよいですか?
ScaladinアドオンとScala言語を使用して、これはアプリケーションのinit()メソッドの次のコードによって実現されます。
override def init() {
super.init()
// bring in javascript needed for addons
val jqsrc = io.Source.fromInputStream(getClass.getResourceAsStream("/js/jquery-1.4.4.min.js"))
val hcsrc = io.Source.fromInputStream(getClass.getResourceAsStream("/js/highcharts.js"))
val xpsrc = io.Source.fromInputStream(getClass.getResourceAsStream("/js/modules/exporting.js"))
mainWindow.executeJavaScript((jqsrc ++ hcsrc ++ xpsrc).mkString)
jqsrc.close(); hcsrc.close(); xpsrc.close() }
InputStreamsとして開かれるjavascriptファイルは、クラスパスに含まれている必要があることに注意してください。SBTを使用してこれを行うには、src / main dirの下にresourcesディレクトリを作成し、その中に/jsdirと.jsファイルを配置します。これらは、warファイルがビルドされるときにWEB-INF/classesディレクトリに配置されます。これらは、xsbt Webプラグインからcontainer:startを使用するときにもクラスパスに表示されるため、同じコードで.warファイルを作成する前にテストできます。
このアプローチは、Scalaがなくても(ただし、より多くのJavaコードを使用して)機能するはずですが、それはどのような楽しみでしょうか?
より効率的な方法は、JavaScriptコードをオブジェクトに保持されている文字列にロードして、次の場所で繰り返し読み取る必要がないようにすることです。
object Script {
val js = Seq("/js/jquery-1.4.4.min.js", "/js/highcharts.js", "/js/modules/exporting.js") map { f =>
val in = io.Source.fromInputStream(getClass.getResourceAsStream(f))
val s = in.mkString
in.close()
s
}
}
次に、Vaadinアプリケーションで:
class MyApp extends Application(title = "My App", applicationTheme = "reindeer") {
override def init() {
super.init()
// bring in javascript needed for addons
Script.js foreach mainWindow.executeJavaScript
}
.
.
.
ページヘッドにカスタムリソースを追加するための拡張ポイントはありません。
とにかくそれを行うには、コンテンツモードCONTENT_RAWのラベルとJS/CSSのようなカスタムコンテンツをそこに追加できます。必要に応じて、頭にコンテンツを追加できます
document.getElementsByTagName("head")[0].appendChild()
。
Vaadin 6には、次の2つのオプションがあります。
すでに述べたオプション:Vaadinサーブレットを拡張する
コンパイルしたウィジェットセットにファイルを含めます。
.gwt.xmlファイルとクライアントディレクトリを含むフォルダの下にpublicというディレクトリを作成します。ここにウィジェットセットに含めるファイルをコピーします。ほとんどの場合、これらのファイルはjsファイルとcssファイル、そしておそらくいくつかの写真です。このダイレクトの下にあるすべてのファイルは、コンパイルされたウィジェットセットにコピーされます。
また、jsファイルをVaadinアプリに含める場合は、.gwt.xmlファイルに次の行を追加します(srcはパブリックフォルダーを基準にしています)。
<script src="jquery/jquery.js" />