S2Wicketの紹介



Similar documents
DIコンテナ 前 回 ご 説 明 したSpring DIコンテナに 共 通 するこ とは 依 存 を 注 入 することによってシステム 内 に 存 在 するオブジェクト 同 士 の 結 びつきを 緩 くすることで あり そのための 仕 組 み 提 供 を 意 味 する [Spring のDIコンテナ

Wicket as Meta-Framework

(Microsoft PowerPoint - ClickFramework.ppt [\214\335\212\267\203\202\201[\203h])

治 験 実 施 管 理 システム NMGCP 向 け Excel 形 式 プロトコール 作 成 手 順 書 V4.0.3 対 応 版 第 1 版 株 式 会 社 富 士 通 アドバンストエンジニアリング All Rights Reserved,Copyright 株 式 会 社 富 士 通 アドバン

[1]...1 [2]...1 [3] Java Web...3 [4] Java Web...18 [

Teedaで始めるPage駆動開発

java_servlet2_見本

メディプロ1 Javaサーブレット補足資料.ppt

シラバスの作成と管理用Webシステムの開発

PowerPoint プレゼンテーション

Web Servlet/JSP JSP

T2でつなごう! -つなぐつながるWebフレームワーク「T2」の紹介

JavaScript演習

PowerPoint プレゼンテーション

untitled

Microsoft PowerPoint - webサイト更新マニュアル ppt [互換モード]

GulfStar1.5ユーザーマニュアル

Enterprise Architect日本語版 モデリング操作ガイド (データベースモデリング編)

方程式を解いてみよう! C++ から PHP + JavaScriptへ

以 下 に 手 順 の 流 れを 記 載 します 3ページ 以 降 で 各 項 目 の 手 順 を 説 明 します ( をクリックすると 該 当 ページにジャンプします ) また 4ページに 汎 用 データ 受 入 に 関 するよくあるお 問 い 合 わせをご 紹 介 しています Step (3ペー

オンラインテスト

MetaMoJi ClassRoom/ゼミナール 授業実施ガイド

XML形式の電子報告書作成に当たっての留意事項

Microsoft PowerPoint _リビジョンアップ案内_最終.pptx

目 次 第 1 章 GC スクリプトとは?... 4 第 2 章 JavaScript と GC スクリプトの 違 いは? jquery とは? jquery オブジェクトを 作 ってみよう jquery オブジェクトを 既 存 の 要 素 に

活用ガイド-編集しよう

以 下 に 手 順 の 流 れを 記 載 します 3ページ 以 降 で 各 項 目 の 手 順 を 説 明 します ( をクリックすると 該 当 ページにジャンプします ) また 15ページに 汎 用 データ 受 入 に 関 する よくあるお 問 い 合 わせをご 紹 介 しています Step1 (

<4D F736F F D F93878CA797708F4390B3816A819A95CA8B4C976C8EAE91E682538B4C8DDA97E12E646F6378>

intra-mart Accel Platform — ViewCreator ユーザ操作ガイド   第6版  

1

10th Developer Camp - B5

振込データの作成

: : : TSTank 2

PATENTBOY/Netバージョンアップ説明書(Ver.1.92)

intra-mart WebPlatform/AppFramework

Cubby in Action

●70974_100_AC009160_KAPヘ<3099>ーシス自動車約款(11.10).indb

HTTP Web Web RFC2616 HTTP/1.1 Web Apache Tomcat (Servlet ) XML Xindice Tomcat 6-2

<4D F736F F D208DE3905F8D8291AC8B5A8CA48A948EAE89EF8ED0208BC696B18BA492CA8E64976C8F BD90AC E378C8E89FC92F994C5816A>

RaQuest MindManager

工事記録写真チェックシステム 操作説明書

Transcription:

2007 Autumn S2Wicketの の 紹 介 よういちろう 1

自 己 紹 介 田 中 洋 一 郎 株 式 会 社 エーティーエルシステムズ http://www.atl-systems.co.jp/ Blog: 天 使 やカイザーと 呼 ばれて http://www.eisbahn.jp/yoichiro/ S2Wicketコミッタ 2

[ 宣 伝 ] こみゅすけ http://commusuke.eisbahn.jp/ eisbahn 3

アジェンダ Apache Wicket S2Wicket デモンストレーション 今 後 の 展 望 4

Apache Wicket JavaにおけるWebアプリ 開 発 の 進 化 クラスの 役 割 分 割 設 定 ファイル(XML)による 制 御 Viewのテンプレート 化 ViewのXHTML 化 設 定 ファイルの 省 略 簡 略 化 Ease of Development JSP (Scriptlet) JSP (CustomTag) Struts JSF Java Servlet Wicket Spring MVC Teeda 5

Apache Wicket 特 徴 何 でもかんでもJava POHP コンポーネント&イベント 指 向 JavaScriptを 書 かないAjax シンプル 6

Apache Wicket 何 でもかんでもJava 従 来 肥 大 複 雑 化 した 設 定 ファイル 点 在 化 したロジック Java Java Java Java XML Java Java XML XML XML Property Property JSP JSP JSP JSP JSP Wicket 設 定 とロジックは 全 てJavaに JavaとHTMLは1 対 1 Java Java Java Java Java Java Java Java Java Property Property HTML HTML HTML HTML HTML HTML HTML HTML HTML HTML 7

Apache Wicket Plain Old Html Page <html:form action= /register.do method= post > 所 属 : <c:out value= ${division.name} name} /><br /> 名 前 : <html:text property= name /><br /> 年 齢 : <html:text property= age /><br /> 従 来 <html:submit value= OK /> Webブラウザで 表 示 できない </html:form> <form wicket:id= registerform method= post > 所 属 : <span wicket:id= divisionname ></span> 名 前 : <input type= text wicket:id= name /><br /> 年 齢 : <input:type= text wicket:id= age /><br /> Wicket <input type= submit value= OK" /> wicket:id 属 性 で </form> 要 素 を 特 定 POHP Webブラウザで 表 示 可 能 8

Apache Wicket コンポーネント&イベント 指 向 <a wicket:id= link >ここをクリックしてください </a><br /> <span wicket:id= label ></span> final Label label = new Label( label, new Model()); add(label); Link link = new Link( link ) { イベント 処 理 public void onclick() { label.setmodelobject( イベントが 発 生 しました ); } }; add(link); コンポーネント 指 向 画 面 の 要 素 が 部 品 化 されている コンポーネント 指 向 画 面 の 要 素 が 部 品 化 されている 9

Apache Wicket JavaScriptを 書 かないAjax final Label label = new Label( label, new Model()); label.setoutputmarkupid(true); add(label); イベント 処 理 (Ajax) AjaxLink link = new AjaxLink( link ) { public void onclick(ajaxrequesttarget t) { label.setmodelobject( setmodelobject( イベントが 発 生 しました ); t.addcomponent(label); } }; add(link); <a href="#" "" wicket:id="link2" " onclick="var wcall=wicketajaxget('/s2wicket/hello?wicket:interf ace=:3:link2::ibehaviorlistener&wicket:behaviorid=0 ', function() { }, function() { });return!wcall;" id="link2">ここをクリックしてください </a><br /> Ajax 対 応 コンポーネント JavaScriptを 自 動 生 成 <span wicket:id="label" id="label"></span> 10

Apache Wicket シンプル + 依 存 ライブラリ たった1つのみ HelloApplication FooPage.java FooPage.html BarPage.java BarPage.html HelloSession HogeForm.java HogeForm.html プログラムの 構 造 JavaとHTMLの 対 で 構 成 PageやFormなど コンテナ 単 位 で 再 利 用 可 能 11

Apache Wicket サンプルデモンストレーション 12

Apache Wicket 守 備 範 囲 Viewを 担 当 リクエストの 処 理 と 結 果 のレンダリング 何 らかのDIコンテナと 連 携 が 必 要 View Business Database Logic Access 13

S2Wicket 特 徴 WicketにS2Containerを 統 合 統 合 方 式 を 選 択 可 能 14

S2Wicket S2Containerとの 連 携 FooPage extends WebPage I/F Proxy S2Wicket PageオブジェクトにProxyをセット イベント 処 理 時 にI/Fを 使 うことで S2Container 内 のオブジェクトをコール Impl public void onclick() { S2Wicket } S2Container 15

S2Wicket 前 準 備 public class OrderApplication extends WebApplication { public OrderApplication() { } SeasarComponentInstantiationListener S2Wicketを 有 効 にするためのクラス WebApplication#init() 内 で 登 録 する 各 コンポーネントのインスタンス 生 成 が 行 われる 度 に 呼 び 出 される protected void init() { super.init(); addcomponentinstantiationlistener( t ti ti t new SeasarComponentInjectionListener(this)); } } 16

S2Wicket フィールドインジェクション public class OrderPage extends WebPage { } @SeasarComponent private OrderService orderservice; public OrderPage() { add(new Link(...) { orderservice.order(...); }); } <component name= orderservice class=...orderserviceimpl > l > </component> app.dicon フィールドインジェクション S2Wicketは 対 象 フィールドにオブ ジェクトをセットする セットタイミングは 該 当 クラスのイ ンスタンス 生 成 時 17

S2Wicket @SeasarComponentによるインジェクション 型 によるルックアップ s2container.getcomponent( OrderService.class ) @SeasarComponent private OrderService orderservice; S2Container 名 前 によるルックアップ s2container.getcomponent( order ) @SeasarComponent(name= order ) private OrderService orderservice; S2Container @SeasarComponent AnnotationFieldFilterが 使 用 される 暗 黙 的 に 適 用 されている 18

S2Wicket 命 名 規 約 に 従 ったインジェクション FieldNamePatternFieldFilterの 使 用 FieldNamePatternFieldFilter filter = new FieldNamePatternFieldFilter(); filter.setpackagenamepatternregex("パッケージ 名 の 正 規 表 現 "); filter.setclassnamepatternregex("クラス 名 の 正 規 表 現 "); filter.setfieldnamepatternregex( フィールド 名 の 正 規 表 現 ); 命 名 規 約 FieldFilter 正 規 表 現 により 対 象 フィールドを 特 定 インジェクション 対 象 のフィール ルックアップはフィールド 名 を 使 用 ドを 決 定 するためのAPI WebApplicationクラス 内 で 登 録 自 作 することが 可 能 19

S2Wicket 命 名 規 約 に 従 ったインジェクション FieldNamePatternFieldFilter filter = new FieldNamePatternFieldFilter(); filter.setpackagenamepatternregex( setpackagenamepatternregex(.*.example example ); filter.setclassnamepatternregex(.*page ); filter.setfieldnamepatternregex(.*service ); example で 終 わるパッケージの Page で 終 わる クラスに 定 義 された Service で 終 わるフィールド 名 package order.example; s2container.getcomponent( orderservice ) public class OrderPage extends WebPage { } private OrderService orderservice; S2Container private OderLogic orderlogic; 20

デモンストレーション 基 本 的 な 使 用 例 大 きなデータを 取 り 扱 う 例 Ajaxと 組 み 合 わせた 例 21

今 後 の 展 望 パフォーマンスの 向 上 FooPage extends WebPage I/F Proxy Proxyのキャッシュ 現 在 は 都 度 生 成 している すでに 生 成 したProxyをキャッシュ して 再 利 用 する Impl public void onclick() { S2Wicket } S2Container 22

今 後 の 展 望 コンポーネントファクトリ private TextField input; input = new TextField( input, new PropertyModel(model, name )); add(input); } @WicketComponent コンポーネントの 生 成 &コンテナ への 登 録 を 自 動 化 OGNLで 簡 単 なロジックも 記 述 可 能 @WicketComponent( modelproperty= name ) private TextField input; @WiktC @WicketComponent( t( actions={ @WicketAction(method= onclick, exp= logic() ) } ) private TextField input; 23

最 後 に S2Wicket http://s2wicket.sandbox.seasar.org/ 天 使 やカイザーと 呼 ばれて http://www.eisbahn.jp/yoichiro/ 24