tapestry 5 / tapestry-s2-integration


tapestry-s2-integration

tapestry-s2は、Tapestry 5からS2Container上のコンポーネントを使うためのライブラリです。フィールドに@S2Componentと書くだけで簡単にS2Container上のコンポーネントを取得することができます。

環境

tapestry-s2を動作させるためには次のJARが必要です(maven2のpom.xmlを提供しています)。

  • Tapestry 5.0.5
  • S2.4.16
  • S2-Tiger-2.4.16

準備

tapestry-s2を使用するためには、アプリケーションのModule BuilderクラスのSub ModuleとしてS2Moduleクラスを指定します。Module Builderクラスは通常、AppModule?という名前のクラスです。

@SubModule(S2Module.class)
public class AppModule {
  :

それからweb.xmlの設定が必要です(詳しくはサンプルを参照してください)。これでtapestry-s2の機能が使えるようになります。

使い方

@S2Componentは、@Injectと組み合わせて使用します。具体的には次のようにします。

@Inject
@S2Component
private Greeting greeting;

この例は、「S2ContainerからGreetingインタフェースを実装したコンポーネントを取得する」という意味です。つまり次のようにS2Containerから取得した場合と同じ動作になります。

Greeting greeting = SingletonS2Container.getComponent(Greeting.class);

また、型ではなくコンポーネント名を指定して取得したい場合は、

@Inject
@S2Component("greeting")
private Greeting greeting;

のように、@S2Componentにコンポーネント名を指定します。

制限

  • @S2Componentでインジェクトできるコンポーネントはinterface型のみです。class型に対してアノテートしてもエラーになります。なので、S2Containerに登録されていてもinterfaceを実装していないコンポーネント、あるいは実装していてもclass型のフィールドに対して@S2Componentを使用することはできません。
  • HOT Deployには対応していません。

ライセンス

ASL2.0

サンプル

S2JSFのサンプルにある従業員管理アプリをtapestry-s2を使って作成しました。

既知の問題

  • SMART Deployの構成にしてありますが、HOT Deployには対応していません。
  • レンダリング後のHTMLが正しくない。具体的には↓のように<html><head><body>が重複して表示されてしまう。(が、これはTapestryの問題で今後修正されるらしい)
    <html>
    <head><link href="/tapestry-s2-employee/assets/tapestry/default.css" rel="stylesheet" type="text/css">
    <meta content="text/html; charset=UTF-8" http-equiv="Content-Type">
    <title>Employee Management</title>
    <link href="../css/global.css" rel="stylesheet" type="text/css">
    </head>
    <body>
    
    <html>
    <head>
    <meta content="text/html; charset=UTF-8" http-equiv="Content-Type">
    <title>Employee Management</title>
    <link href="/tapestry-s2-employee/css/global.css" rel="stylesheet" type="text/css">
    </head>
    <body>
    :
    :

TODO 動かし方の手順

リリース履歴

0.0.3 [2007/08/04]

  • T5.0.5に合わせて修正した。使い方はこれまでと同様。

0.0.2 [2007/04/09]

  • T5.0.4-SNAPSHOTからの@Injectの仕様変更に伴い、単独で動作する@S2Injectから、@Injectと組み合わせて動作する@S2Componentに変更

0.0.1 [2007/03/04]

  • 最初のリリース(そしてたぶん最後のリリース

最新の20件

2007-05-13 2007-08-04
  • tapestry 5/tapestry-s2-integration
2007-04-30 2010-05-04 2010-03-16 2007-09-05 2007-08-28 2006-09-22 2006-02-22

  • counter: 1810
  • today: 1
  • yesterday: 0
  • online: 1