-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy paths2tapestry.html
125 lines (114 loc) · 10.5 KB
/
s2tapestry.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<!-- don't edit start -->
<head><title>Seasar - DI Container with AOP - </title><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<link href="seasar_b.css" type="text/css" rel="stylesheet"><script src="seasar_b.js" type="text/JavaScript" language="JavaScript"></script>
</head><body onload="preload('ja')"><table width="100%" border="0" cellspacing="0" cellpadding="0" align="left" height="100%"><tr>
<td align="left" valign="top" width="780"><table width="780" border="0" cellspacing="0" cellpadding="0" class="white">
<tr><td colspan="7"><img height="5" width="780" src="images/top01_b.gif" alt=""></td></tr>
<tr><td><img height="117" width="235" src="images/top02_b.gif" alt="Seasar"></td>
<td colspan="3"><img height="117" width="289" src="images/top03.gif" alt="DI Container with AOP"></td>
<td colspan="3"><img height="117" width="256" src="images/spacer.gif" alt=""></td>
</tr><tr><td rowspan="2"><img src="images/top04.gif" alt="" height="49" width="235"></td>
<td><a href="index.html"><img src="images/menu01_b_ja.gif" height="30" width="78" border="0" alt="" id="menu01" onmouseover="swap(1)" onmouseout="restore(1)"></a></td>
<td><a href="projects.html"><img src="images/menu02_b_ja.gif" height="30" width="101" border="0" alt="" id="menu02" onmouseover="swap(2)" onmouseout="restore(2)"></a></td>
<td><a href="products.html"><img src="images/menu03_b_ja.gif" height="30" width="110" border="0" alt="" id="menu03" onmouseover="swap(3)" onmouseout="restore(3)"></a></td>
<td><a href="resources.html"><img src="images/menu04_b_ja.gif" height="30" width="113" border="0" alt="" id="menu04" onmouseover="swap(4)" onmouseout="restore(4)"></a></td>
<td><img src="images/menu05_b_ja.gif" height="30" width="109" border="0" alt="" id="menu05" onmouseover="swap(5)" onmouseout="restore(5)"></td>
<td><img height="30" width="34" src="images/menu06.gif" alt=""></td></tr><tr>
<td colspan="6"><img height="19" width="545" src="images/spacer.gif" alt=""></td></tr></table>
<table width="780" border="0" cellspacing="0" cellpadding="0" height="100%" class="white">
<tr align="left" valign="top"><td width="14"><img height="14" width="14" src="images/spacer.gif" alt=""></td><td width="752" class="main">
<!-- don't edit end -->
<!-- document start -->
<p style="background-color:red;color:white;font-size:x-larger">
重要:本プロダクトは、クローズ済みプロダクトです。プロジェクトとしての活動は特に行っておりません。プロダクトは、ダウンロード可能なまま残しております。
</p>
<p>S2Tapestryを使うと、S2と<a href="http://jakarta.apache.org/tapestry/">Tapestry</a>が簡単に連動するようになります。ページクラスにサービスコンポーネントが自動的に設定されるので、ページクラスの役割は適切なサービスコンポーネントを呼び出すだけになり、プレゼンテーション層とサービス層の役割分担も明確になります。</p>
<h2><a name="Setup">セットアップ</a></h2>
<p>S2と同様にJDK1.4以上が必要です。サンプルは、<a href="http://jakarta.apache.org/tomcat/">Tomcat</a>、<a href="http://www.sysdeo.com/eclipse/tomcatPlugin.html">Tomcat Plugin</a>、<a href="http://spindle.sourceforge.net/">Spindle</a>を使うことを前提にしています。あらかじめインストールして置いてください。S2TapestryVx.x.x.jarを解凍してできたs2tapestryディレクトリをEclipseのJavaプロジェクトとして丸ごとインポートしてください。.classpathを上書きするか聞かれるので、すべてはいのボタンをクリックして、すべてを取り込みます。 これで、私と全く同じ環境になります。サンプルはS2TapestryExamleVx.x.x.jarとして別途用意されているので、ダウンロードして解凍してください。Eclipseでs2tapestry-exampleという名前でJavaプロジェクトを作成します。Tomcatプロジェクトではないので気をつけてください。解凍してできたs2tapestry-exampleディレクトリを丸ごとインポートしてください。.classpathを上書きするか聞かれるので、すべてはいのボタンをクリックして、すべてを取り込みます。s2tapestry-exampleプロジェクトを右クリックしてプロパティ->Tomcatを選びます。Tomcatプロジェクトであるをチェックし、アプリケーションURIを/s2tapestry-exampleとします。これで、Tomcatを再起動して、ブラウザから<a href="http://localhost:8080/s2struts-example/">http://localhost:8080/s2tapestry-example/app</a>にアクセスすると足し算のサンプルを見ることができます。</p>
<h2><a name="Usage">使い方</a></h2>
<p>S2Containerを起動するためにS2ContainerServletをweb.xmlに登録します。。</p>
<h3>web.xml</h3>
<pre><web-app><br /> <display-name>s2tapestry-example</display-name><br /> <servlet><br /> <servlet-name>s2container</servlet-name><br /> <servlet-class>org.seasar.framework.container.servlet.S2ContainerServlet</servlet-class><br /> <load-on-startup/><br /> </servlet><br /> <servlet><br /> <servlet-name>s2tapestry-example</servlet-name><br /> <servlet-class>org.apache.tapestry.ApplicationServlet</servlet-class><br /> <load-on-startup>1</load-on-startup><br /> </servlet><br /> <servlet-mapping><br /> <servlet-name>s2container</servlet-name><br /> <url-pattern>/s2container</url-pattern><br /> </servlet-mapping><br /> <servlet-mapping><br /> <servlet-name>s2tapestry-example</servlet-name><br /> <url-pattern>/app</url-pattern><br /> </servlet-mapping><br /></web-app>
</pre>
<p>S2とTapestryを連動させるためには、S2用のEngineをアプリケーション仕様書に登録する必要があります。</p>
<h3>s2tapestry-example.application</h3>
<pre><application name="s2tapestry-example" engine-class="org.seasar.tapestry.S2Engine" >
<page name="Home" specification-path="Home.page"/>
</application></pre>
<p>必要なコンポーネントをコンポーネント定義に登録します。ページコンポーネントはTapestryが管理するので、登録する必要はありません。また、この定義ファイルは、アプリケーション全体の定義であるapp.diconに登録する必要があります。</p>
<h3>Add.dicon</h3>
<pre><components><br /> <component name="addService" class="examples.tapestry.AddServiceImpl"/><br /></components>
</pre>
<h3>app.dicon</h3>
<pre><components><br /> <include path="examples/tapestry/Add.dicon"/><br /></components></pre>
<p>サービスコンポーネントを受け取るためにページ仕様にプロパティ仕様を定義します。TapestryからS2のコンポーネントを参照するには、global.コンポーネント名、あるいは<a href="http://homepage3.nifty.com/seasar/DIContainer.html#Namespace">名前空間</a>が指定されている場合には、global.名前空間.コンポーネント名で参照します。</p>
<h3>Home.page</h3>
<pre><page-specification class="examples.tapestry.Home">
<component id="arg1" type="TextField">
<binding name="value" expression="arg1"/>
</component><br />
<component id="arg2" type="TextField">
<binding name="value" expression="arg2"/>
</component><br />
<property-specification name="addService"
type="examples.tapestry.AddService"><br /> global.addService
</property-specification>
</page-specification></pre>
<h3>Home.html</h3>
<pre><form jwcid="@Form" listener="ognl:listeners.calculate"><br /><input jwcid="arg1" type="text"/> +<br /><input jwcid="arg2" type="text"/><br /><input type="submit" value="calculate"/><br /></form>
</pre>
<p>Pageクラスはコンポーネントを受け取るためのプロパティを定義しておきます。プレゼンテーション層は、サービス層に処理を依頼し、プレゼンテーション層本来の役割に徹していることが分かると思います。</p>
<h3>Home.java</h3>
<pre>
package examples.tapestry;
import org.apache.tapestry.IRequestCycle;
import org.apache.tapestry.html.BasePage;
public class Home extends BasePage {
private Integer arg1_;
private Integer arg2_;
private AddService addService_;
public Integer getArg1() {
return arg1_;
}
public void setArg1(Integer arg1) {
arg1_ = arg1;
}
public Integer getArg2() {
return arg1_;
}
public void setArg2(Integer arg2) {
arg2_ = arg2;
}
public AddService getAddService() {
return addService_;
}
public void setAddService(AddService addService) {
addService_ = addService;
}
public void calculate(IRequestCycle cycle) {
int result = addService_.add(arg1_.intValue(), arg2_.intValue());
AddResult next = (AddResult) cycle.getPage("AddResult");
next.setResult(new Integer(result));
cycle.activate(next);
}
}
</pre>
<!-- document end -->
<!-- don't edit start -->
</td>
<td width="14"><img height="14" width="14" src="images/spacer.gif" alt=""></td>
</tr><tr>
<td width="14"><img height="30" width="14" src="images/spacer.gif" alt=""></td>
<td width="766"><img height="30" width="592" src="images/spacer.gif" alt=""></td>
</tr><tr>
<td width="14"><img height="14" width="14" src="images/spacer.gif" alt=""></td>
<td width="766" class="copyright">© Copyright The Seasar Foundation and the others 2004-2005, all rights reserved.</td>
</tr></table>
<td class="backright" align="left" valign="top"> </td></tr><tr>
<td class="backunder" align="left" valign="top" width="780" height="16"> </td>
<td class="backcorner" align="left" valign="top" height="16"> </td>
</tr></table></body>
<!-- don't edit end -->
</html>