マルチランタイムとその実装方法
OpenLaszloは Flashベース のRIA(Rich Internet Application web framework)としてスタートしましたが、
Renderingエンジンを切り替えることができる構造を持っています。
バージョン4.0系統からFlashと同時にDHTMLもサポートするようになりました。
今回のバージョン4.1.1でDHTMLサポートをベータバージョンから正式サポートと宣言しています。Figure15.1 Multi_RIA
バージョン4.1は4.0から大幅な変更があり、特に影響のあったLaszloinActionのchap15の例題について解説とバージョンアップ前後の
ソースコードを載せます。
2つの実行モード「Laszloサーバーモード」と「SOLOモード」
OpenLaszloはFlashとDHTMLというマルチランタイム機能に加え、2つの実行モード「Laszloサーバーモード」と「SOLOモード」を持ちます。
Laszloサーバーモードでは常にLaszlo専用のアプリケーションサーバーと接続してダイナミックにコンテンツを生成して表示するモードであり、
SOLOモードとはLaszlo専用のアプリケーションサーバーで生成したコンテンツを保存して、これをApacheなどの静的なWebサーバーで静的なコンテンツとして
表示するモードです。
web/my-apps/ に hello.lzx を置きます。
ブラウザで http://localhost:8080/OpenLaszlo411Demo/my-apps/hello.lzx と入力すると"Hello Laszlo!"と表示されますが、
ここでブラウザのスクロールバーを使って一番下の表示をみるとこの様な操作パネルが現れます。
これがディベロッパーコンソールといわれるもので、ここからいくつかの操作が行えます。
"Server"ボタンをクリックすると、LaszloアプリケーションをHTMLに埋め込む方法が表示されます。
最初はCompoler Optionsは swf8 のラジオボタンがアクティブですが、DHTML をアクティブにして Compileボタンをクリックすると
Flashモードの表示からDHTMLモードの表示に切り替わります。
"SOLO"ボタンをクリックするとSOLOモードのコンテンツを出力を行うことが出来ます。
FlashモードとDHTMLモード各々専用のコンテンツ出力がなされます。
"View Source"ボタンをクリックすると、ソースコードが表示されますが、まだ日本語表示には対応していません。
LaszloアプリケーションをHTMLにEmbed(埋めこむ)すること
LaszloではダイナミックなOpenLaszloコンテンツをEmbedするためのAPiを用意しています。
このAPIはバージョン4.0系統と4.1系統では大きく変わっています。
ここではHTMLにembedする時に、jspを使用します。そして2つのバージョン共に使うと便利な"header.jsp"を紹介します。
これもバージョンごとに変わります。 Version4.0系統: header.jsp Version4.1: header.jsp
そしてjspの中でheader.jspをincludeして使用します。
この方法ですとOpenLaszloを開発するプロジェクト毎に異なるアプリケーションサーバーへのデプロイしたときの
コンテキストパスの相違を吸収してくれるので、非常に便利です。
API | Target | 説明 | |
---|---|---|---|
4.0 | Lz.dhtmlEmbed |
DHTML |
Laszlo DHTMLアプリケーションをロードする |
Lz.dhtmlEmbedLFC |
DHTML |
Laszlo LFCライブラリをロードする。DHTMLアプリケーションの場合のみ必要 | |
Lz.swfEmbed |
Flash |
Laszlo SWFアプリケーションをロードする | |
4.1 |
lz.embed.dhtml |
DHTML |
Laszlo DHTMLアプリケーションをロードする |
lz.embed.lfc |
DHTML |
Laszlo LFCライブラリをロードする。DHTMLアプリケーションの場合のみ必要 | |
lz.embed.swf |
Flash |
Laszlo SWFアプリケーションをロードする |
LaszloアプリケーションをHTMLにEmbedするサンプル
HTMLにEmbedされたLaszloアプリケーションとコミュニケーションをするサンプル
(同時に<div>タグでwebページでの配置も指定)
4.0API | 4.1API | Target | 説明 |
---|---|---|---|
Lz.id.callMethod |
lz.embed.id.callMethod |
Flash |
EmbedされたSWFのmethodをcallしresultを返す |
Lz.id.getCanvasAttribute |
lz.embed.id.getCanvasAttribute |
DHTML |
canvas elementのTop level attributeのvalueを読む |
Lz.id.setCanvasAttribute |
lz.embed.id.setCanvasAttribute |
DHTML |
canvas elementのTop level attributeにvalueを書く |
Laszloアプリケーション内にHTMLをEmbedするサンプル
ドキュメントで調べたところ、<html>タグは大きく実装方法を変更したようです。LaszloinActionのchap15のPage424の例題
は少し変更を加えないと動作しなくなりました。
バージョン4.0 | JavaScript Synopsis public lz.html extends LzNode{ } |
---|---|
バージョン4.1 | <html>JavaScript : lz.html |