Tapestryについて語ろうよ!

■ このスレッドは過去ログ倉庫に格納されています
1Ace
垢版 |
NGNG
JakartaのTapestryフレームワーク使ってますか?
日本ではなかなか情報が手に入らず、本家のドキュメントも
古いバージョンのままなので、使いたいと思って挫折した人多くありませんか?

私はTapestry2.3あたりのころにTapestryの存在を知りました。
それまではStrutsでした。
デザイナーを内輪にかかえていない我が社では外注先から戻ってきた
HTMLからJSPへの変換および、再修正依頼が非常に困難でした。
○JSPへの変換ってつまらないよね!
○デザイナーがStrutsの拡張タグ理解できるわけないだろう!
○できたとしてどうやってデザインするの?
そんなあなたにはTapestryしかありません!
ぜひ日本でもこの2chを中心にTapestryの輪を広げて
Strutsにイカレテいる古臭いプログラマーたちを見返してやりましょうよ!

ちなみに私は携帯&PC向け有料サイトでTapestry使ってます。(^o^)v
登録ユーザ○十数万人、売上○千万円程度の規模です。
携帯は全機種対応確認済みです。
携帯のブラウザのバグ的なものに対応するために、
Tapestryのソースいくつか書き換えてるけどね(^_^;

Tapestryに興味ある人レスよろしくね!
NGNG
>>59
これはメリットだと思うのだけど、Struts Tilesのようにページをパーツごとに
分割している場合、ブラウザではちゃんと表示されないよね。
結局サーバを介して確認しなくちゃいけない。
68デフォルトの名無しさん
垢版 |
NGNG
age
69デフォルトの名無しさん
垢版 |
NGNG
>>67
それはむしろ当たり前なんだけど、それでもダミーデータでそれらしく
デザインするとか、もしくはダミーヘッダ・フッタと言うべき機能がある
<html>
<script>
function hoge(){}
</script>
<body>
not for content of Tile but only for Design
<span jwcid="$content$">
content of Tile
content of Tile
content of Tile
</span>
not for content of Tile but only for Design
</body>
</html>
上の例は実行時には$content$で囲まれた
content of Tile
content of Tile
content of Tile
しか出力されません。デザイン時には当然すべてのデータでデザインできます。
70デフォルトの名無しさん
垢版 |
NGNG
>>66
うちの会社はデザイナーいないよ。
外注先デザイン会社の営業の人とは話するけど、
デザイナーとは直接コンタクト取れないね。
71Ace
垢版 |
NGNG
Tapestry入門実践講座

1.はじめに
 サーバーサイドJavaにおける、サーブレット+JSPのコーディング自由度の高さに起因する数々の問題点から、オープンソースフレームワークを用いた開発手法への期待が高まっている。
その中で、現在日本で最も使用されていると思われるStrutsフレームワークを用いて、デザイン(ビュー)とロジックを分離することの利点に対しての理解も今や周知の状況と言えよう。
しかしながら、実際の開発現場、特にHTMLデザイナーとWEBプログラマーが完全に分業しているシステム会社でのWebアプリケーション開発、保守手順から考えると、
StrutsはJSPの根本的な欠点を克服できていない。
つまり、HTMLデザイナーが使用するメジャーなWYSIWYGのHTML編集ソフト(HomePageBuilder等)はスクリプトレット、拡張タグをほとんど解釈できず、
WEBプログラマーの地道な作業により、1つずつHTMLタグから拡張タグへと書き換えていることだろう(なんと単調でつまらない作業なことか!)
これは今後主流になる可能性が高いJSFもほぼ同じ欠点を持つ可能性が高い。(開発者の声を聞け!)
 この講座では、Strutsを用いたMVCスタイルの開発への期待と絶望を体験したWEBプログラマーに対して、海外で人気が高く、Struts対抗馬と言われつつあるTapestryフレームワークを紹介し、
このフレームワークを用いることによって、よりビジュアルに、デザインの自由度と再利用性、HTMLデザイナーとの完全分業スタイルへの手助けとなることを期待する。
72デフォルトの名無しさん
垢版 |
NGNG
Tapestryのソースを見ると、
CVSでヴァージョン管理するときに
$$記号でソースコード内にヴァージョン番号などをつけるのが難しくなると
思うのだが、
そういう場合はどうすれば言いのだろうか?
Tapestryで本番JSPに変換するときだけCVSの$Id$などをはずすように
チェックアウトせなあかん?

73デフォルトの名無しさん
垢版 |
NGNG
>>72
TapestryはJSPではないのでそもそも「変換」という作業は必要ないよ
実行時に見せたくないなら
<span jwcid="$remove$">$Revision$ $Date$</span>

<span jwcid="$remove$">$Id$</span>
とでも頭に入れるといいよ
NGNG
しかあし、たとえばこんなことをやりたいときは?
ボタンタグにヴァージョン番号をつけるんだ。

<input jwcid="$Revision 1.2$">$Revision$ $Date$</span>

これも$をエンティティ参照で$を消す?
75デフォルトの名無しさん
垢版 |
NGNG
>>74
$Revision 1.2$というコンポーネントはないから、
この書き方自体意味が無く実行時エラーが出るよ
ボタンのテキストにRevision値を書きたいなら
<input type="button" value="$Revision 1.2$">

<button>$Revision 1.2$</button>
でいいんじゃない?
jwcidは存在するコンポーネント名の指定と$remove$、$content$にしか使わないよ
76デフォルトの名無しさん
垢版 |
NGNG
age
NGNG
13 名前:デフォルトの名無しさん 投稿日:03/11/02 18:25
おまえらさ、どうでもいいけど雑誌とかそういうものに流されすぎるのはよくないぞ

53 名前:デフォルトの名無しさん 投稿日:03/11/06 16:20
他にネタがないのだろうな多分。
78デフォルトの名無しさん
垢版 |
NGNG
>>77
部分抜き出しで多数派工作なんて君はマスコミ?w
79デフォルトの名無しさん
垢版 |
NGNG
>>71
次はいつかな?
80デフォルトの名無しさん
垢版 |
NGNG
>>71
俺も早く見たい。入門講座
81デフォルトの名無しさん
垢版 |
NGNG
Tapestryはほかにもどんな用途に使えるんだろう。
すべてのVelocityの機能をTapestryだけで実現することも可能なんだろうか?

Velocityを使った、EclipseのSimteekプラグインのように
プログラミング時のソースコードテンプレートに使える用途はあるのか?
82デフォルトの名無しさん
垢版 |
NGNG
>>71
俺も期待してるよ!
NGNG
>>81
simteecプラグインの間違いだった
http://simteec.aluepke.de/
84デフォルトの名無しさん
垢版 |
NGNG
>>71
今晩あたりかな?w
85デフォルトの名無しさん
垢版 |
NGNG
>>81
TapestryとVelocityはまったく別のものだよ。

Velocityはテンプレートエンジン
TapestryはWebアプリのフレームワーク
86デフォルトの名無しさん
垢版 |
NGNG
やはりWeb用にしか使えないのか?

いやまてよHTML上にかくということは、

XMLでも使えるということか?

ならば、かなり凄いことができる!?
87デフォルトの名無しさん
垢版 |
NGNG
>>86
XMLでも
Anyコンポーネント
Foreachコンポーネント
Conditionalコンポーネント
Choose When Otherwiseコンポーネント
を使えば
XSLTと同じようなことができるね
88デフォルトの名無しさん
垢版 |
NGNG
もまいら、もちつけ

まあ、ここで騒げば
簡単Struts
簡単Velocity
につづけて
簡単Tapestryが発刊されるだろう
それまで待っても遅くないよん
NGNG
>>88
簡単Velocityはクソだったらしいな・・・。

まあVelocityの翻訳がクソだったのが問題なのだが。
90デフォルトの名無しさん
垢版 |
NGNG
>>88
>>89
簡単Velocity
へのリンク希望!
91デフォルトの名無しさん
垢版 |
NGNG
>>90
http://www.amazon.co.jp/exec/obidos/ASIN/4798005975/ref=sr_aps_b_15/250-3031014-3013008
92デフォルトの名無しさん
垢版 |
NGNG
>>89
いやだから、『簡単』Velocityなのです
93デフォルトの名無しさん
垢版 |
NGNG
TapestryとVelocityを比較するとTapestryの方がよく見えてきたぞ
NGNG
>>93
例えばどういう点?
NGNG
>>94
名前
96デフォルトの名無しさん
垢版 |
NGNG
ベム、ベラ、ベロシチィ! 
妖怪人間! ジャーン♪
97デフォルトの名無しさん
垢版 |
NGNG
>>96
今どきそんなの誰も知らないよ
98デフォルトの名無しさん
垢版 |
NGNG
今後比較予定だってー
www.spacewalker.tv/tapestry/comparison.html
99デフォルトの名無しさん
垢版 |
NGNG
>>1
先こされるぞ!早く次を書けよw
100デフォルトの名無しさん
垢版 |
NGNG
キリ番ゲット!
NGNG
Tapestryとファンをダイレクトに結ぶ会員制オンラインファンクラブ「Tapestry club」。
ここでは、川畑・堂珍が積極的に参加して、いろんな企画をスタートさせていきます。
NGNG
JAVA WORLDのサンプルのZIPは解凍しようとするとディレクトリ名が変だ?
103デフォルトの名無しさん
垢版 |
NGNG
>>102
ああ、やっぱり?
おれもディレクトリ名が
「ケミストリー」になる
NGNG
appディレクトリの前にゴミディレクトリがあるみたいだし。
解凍してしまったこの変なディレクトリ消すのめんどくさ。
105102
垢版 |
NGNG
サンプル動いた。(^^)
106Ace
垢版 |
NGNG
2.JSPの欠点
JSPにはさまざまな長所、短所が指摘されているが、Tapestryと比較することに焦点を絞った場合、以下の点が欠点として強調される。逆にこれらの事項の裏返しがTapestryにおいて長所と言える。
●JSPファイルにはさまざまな言語(HTML,JavaScript,スクリプトレット,ディレクティブ,拡張タグ)が同時に含まれ、デザイナーはHTML,Javascript以外、特に頻出するスクリプトレット、拡張タグを理解できない
●JSPのスクリプトレットの書き方に標準がなく、プログラマーの能力差、経験差が大きく現れる
●HTMLタグから拡張タグへの変更が機械的で単調な繰り返しが多い
●JAVAはオブジェクト指向だが、JSPにはオブジェクト指向を感じない、デザインの再利用性が低い
107デフォルトの名無しさん
垢版 |
NGNG
>>106
次は?もっと早いペースで頼むよ
NGNG
WEBDB vol16見ながらやってるんだけど、
<input jwcid="@TextField" value="ognl:echo"/>
とか書いたら、
<input type="text" name="$TextField" value=""/>
に変換された。
これってjavascript使いたいときどうすんのさ。
name属性の値はテンプレの段階じゃわからん。
>>1は責任もって教えること。
109デフォルトの名無しさん
垢版 |
NGNG
>>108
<input type="text" jwcid="hoge@TextField" value="ognl:hoge"/>
とかすると、
<input type="text" name="hoge" value=""/>
になる。これ常識w
Form項目はすべて名前付けたほうが気持ち(・∀・)イイ!!
WEBDB vol16とかJAVA Worldの人は古いTapestry2.xの解説してるから、
Tapestryのサンプル見た方が早い場合もあるな
書くの面倒だけど、TapestryのJavaScript機能使えば別の解決法もある
それもTapestry付属のサンプル見るよろし
110デフォルトの名無しさん
垢版 |
NGNG
>>108
早く返事しろよ
  ∧_∧
( ´∀`)つゴルァ
111108
垢版 |
NGNG
>>109
昨日初めてさわったんよ。もっと教えて。
"hoge"を使うようなjavascriptだと少なくとも
テンプレHTMLの段階ではエラーになるから都合悪いって話。
NGNG
>>109
早く返事しろよ
    ∧_∧
( ´∀`)つゴルァ
113デフォルトの名無しさん
垢版 |
NGNG
おい、マキシシングル出たぞ
早く買えよ
114デフォルトの名無しさん
垢版 |
NGNG
>>111
<input type="text" jwcid="hoge@TextField" name="hoge" value="ognl:hoge"/>
とすると
<input type="text" name="hoge" name="hoge"/>
になるがJavaScriptは動くことは動く
別の書き方をするなら
<input type="text" jwcid="AAA@TextField" name="BBB" value="ognl:CCC"/>
とすると
<input type="text" name="AAA" name="BBB"/>
になる。
name属性がreserved parameterになってないTapestryのバグか仕様だな
気に入らないなら
Tapestryのソースのframeworkフォルダの
/org/apache/tapestry/form/TextField.jwc
を書き換えて、自前のプロジェクトにマイコンポーネントとして追加するべし
115デフォルトの名無しさん
垢版 |
NGNG
>>111
早く返事しろよ
 ∧_∧
( ´∀`)つゴルァ
116デフォルトの名無しさん
垢版 |
NGNG
>>115
もっとカツラがズレてないとダメだぞ

    ∧_∧
( ´∀`)つゴルァ
117デフォルトの名無しさん
垢版 |
NGNG
みんな知ってるかい?Don't you know?
http://www.dorffweb.com/index.htm?page=taptutorial
に新しいTapestryチュートリアルが出たらしい
>>44 はこれを日本語化すること
NGNG
 <input type="text" name="hoge" name="hoge"/>
なにこれ。ださっ
テンプレはPerlのHTML::Templateみたいなのがいいな。
ベロcityはイマイチだった。

>>1 は解説サイト立ち上げろ
             ∧_∧
( ´∀`)つゴルァ
NGNG
>>117
あ、こりゃ嬉しいな。PDF読んでみよう。THX!
NGNG
1.ボタンが押された際にクライアントサイドでの
 入力チェックをしたいのだが、実現可能?
2.同一のフォーム内に複数のボタンがあっても大丈夫だよね・・・?
121デフォルトの名無しさん
垢版 |
NGNG
>>119
どういたしまして You are welcome!
122デフォルトの名無しさん
垢版 |
NGNG
>>120
1.について
ValidFieldのvalidator属性に
DateValidator
EmailValidator
NumberValidator
StringValidator
のbeanに
<set-property name="clientScriptingEnabled" expression="true"/>
を入れるとクライアントサイドの入力チェックもしてくれます。
標準機能が気に入らないなら自前でコンポーネントを作りましょう。

2.について
Submitコンポーネントを使ってlistener属性に別のリスナーメソッドを関連付ければOK
<input type="submit" value="yes" jwcid="@Submit" listener="ognl:listeners.yesSubmit"/>
<input type="submit" value="no" jwcid="@Submit" listener="ognl:listeners.noSubmit"/>
この場合、Formのlistener属性は書く必要なし
123デフォルトの名無しさん
垢版 |
NGNG
>>120
早く返事しろよ
      ∧_∧
( ´∀`)つゴルァ
124デフォルトの名無しさん
垢版 |
NGNG
>>123
もっとカツラがズレてるぞ

 ∧_∧
( ´∀`)つゴルァ
NGNG
携帯用のページみたいに
同じurlでキャリアによってテンプレートを変えるってこと
Tapestryで簡単にできますか?
126デフォルトの名無しさん
垢版 |
NGNG
>>125
簡単で、やり方は3通りかそれ以上あるけど、同じurlにする理由ってあるの?
127デフォルトの名無しさん
垢版 |
NGNG
>>126
↓「ズラズレモナー」わすれてるぞ!
      ∧_∧
( ´∀`)つゴルァ
NGNG
>>126
深い意味はないです
毎回UserAgentを見て表示先を変えるのって
どうやるのが一番スマートかと思って
129デフォルトの名無しさん
垢版 |
NGNG
>>126
やり方教えて!!
130デフォルトの名無しさん
垢版 |
NGNG
        / ̄ ̄ ̄ ̄\
  ∧_∧  | でたぁ! |
 (;∀;∩)< 教えて性人! |
 (⊃   ) |          |
 人  ヽ´   \____/
 し'(__) 

131デフォルトの名無しさん
垢版 |
NGNG
        / ̄ ̄ ̄ ̄\
  ∧_∧  | でたぁ!  |
 (;∀;∩)< 教えて性人! |
 (⊃   ) |          |
 人  ヽ´   \____/
 し'(__) 
132デフォルトの名無しさん
垢版 |
NGNG
>>128
こんな感じで見ます

UserAgent   ←・・・・・・(・∀・ )
133デフォルトの名無しさん
垢版 |
NGNG
>>130>>131

どんな時もズラせろよ↓

        / ̄ ̄ ̄ ̄\
∧_∧  | でたぁ!   |
 (;∀;∩)< 教えて性人! |
 (⊃   ) |          |
 人  ヽ´   \____/
 し'(__) 
134デフォルトの名無しさん
垢版 |
NGNG
JavaWorld見たかい?
NGNG
設定ファイルとサーブレットマッピング、パッケージ配置の
お作法がわからん。

■パッケージpageの下にページ設定のXMLやBasePage
 を継承したクラスをおいた場合は、web.xmlにpageという
 仮想パス名でApplicationServletを割り当てないと駄目なのですが?
■hoge.applicationファイルってWEBアプリに
 ひとつだけ配置することになるのですか?
■pagegroup1というパッケージの下に配置したページから
 pagegroup1というパッケージの下に配置したページへ
 画面遷移することは可能ですか?
136デフォルトの名無しさん
垢版 |
NGNG
>>135
Tapestryのフォルダ構成の基本はこうだ。

/コンテキストルート
/WEB-INF
  web.xml
  hoge.application
  Home.html
  Home.page
  Home.properties
  /classes
    Home.class

●web.xml(全角スペース注意)
<?xml version="1.0"?>
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
 "http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app>
 <servlet>
  <servlet-name>hoge</servlet-name>
  <servlet-class>org.apache.tapestry.ApplicationServlet</servlet-class>
  <load-on-startup>0</load-on-startup>
 </servlet>
 <servlet-mapping>
  <servlet-name>hoge</servlet-name>
  <url-pattern>/app</url-pattern>
 </servlet-mapping>
</web-app>
137デフォルトの名無しさん
垢版 |
NGNG
>>135
hoge.applicationとサーブレット名のhogeを同じにしておけばよいよ
ページクラスとページテンプレートの関係はページ使用ファイルの中に書くから
同じ名前である必要はない。もちろんパッケージ名はまったく関係がない

ページテンプレートはWEB-INFの下にフラットに置く方が、
デザイナーさんにファイルを送るときにまとまってて都合がよいよ
138135
垢版 |
NGNG
>>137
なるほど。サンクス。
ボチボチサンプルアプリでも作ってみるかね。。
139デフォルトの名無しさん
垢版 |
NGNG
>>98
http://www.spacewalker.tv/tapestry
消えてるんだけど(>_<)
どういうこと?責任取れ!
140デフォルトの名無しさん
垢版 |
NGNG
俺達のTapestryは幻だったのか?
NGNG
画面A - <submit> - submitActionメソッド - <処理OK> - <OK画面>
                          |-<処理NG> - <NG画面>

こんな処理を行ないたいのですが、参考になるサンプルなどを
教えてもらえませんか?
submitActionメソッドの中で遷移先のHTMLファイルを切り替えたいのです。
142141
垢版 |
NGNG
自己レスすまそ。
requestCycle.activate("OkPage");
requestCycle.activate("NgPage");
で出来るな。
これからはヅラ直してから質問しまつ。
NGNG
>>141
目を覚ませ
終わったんだよ・・・
144141
垢版 |
NGNG
>>143
そっか、終わってたんか。
ww2の勉強に切り替えるかね。
145デフォルトの名無しさん
垢版 |
NGNG
        / ̄ ̄ ̄ ̄\
∧_∧  | ほげらっちょ!   |
 (;∀;∩)< ほげらっちょ! |
 (⊃   ) |          |
 人  ヽ´   \____/
 し'(__) 
NGNG
http://jakarta.apache.org/tapestry/
147デフォルトの名無しさん
垢版 |
NGNG
Validationの使い方教えて!
NGNG
なんかよくわからんが…
なんでわざわざsunの主流からはずれる方向を選ぶんだろ。

結局Tapestryだって、独自記述をデザイナーに理解させる必要が
あるわけだし、スクリプトレットを存在させないJSPと対して変わらんよ。
※ちなみに、初期時はともかくとして運用段階においてHTML以外を
 拒絶するデザイナー(だいたいバイト)なんて見たことない。

それに、純粋にプレゼンテーション層からビジネスロジックを
分離するのであれば、Velocityでのアプローチの方がまだましだよ。
ただ、主流じゃないからエンドユーザーへ提案しずらいのが、
そもそもの問題。
---
システムを買うのは、経営者であってデザイナーじゃないし、
経営者は知名度のある技術を好む。

どうしても分離したいのであれば、PHP+Smartyでいいじゃん。
今のところ、主流になっている組み合わせだし。
※それか、自分の趣味で遊ぶとかね。

と、ここまで書いておいて気付いたんだけど。
Tapestryの応援スレだったんだね。フレームワークスレだと思ってた…
水を差したのであれば、すいません。
NGNG
気付いたならsubmitするなよ
150デフォルトの名無しさん
垢版 |
NGNG
>>149
さんせいマンセー
NGNG
折角書いたのを捨てるのもったいない気持ちも分かるw
NGNG
それも貧乏性だろ>もったいない
153デフォルトの名無しさん
垢版 |
NGNG
びんぼー(T_T)/
NGNG
そもそもビンボーでなければ、オープンソースなんて使わないわけで。
NGNG
>>136
その配置だとHTMLファイルを書き換えるたびに
WEBコンテナを再起動しないとだめじゃない?
156デフォルトの名無しさん
垢版 |
NGNG
>>155
そうだけどそれが何か?
NGNG
つづれおり、いいよね。
NGNG
ユーガッタフレンド〜♪
159デフォルトの名無しさん
垢版 |
NGNG
>>157
はぁ?
NGNG
>157 キャロルキングだろ。たぶん
161デフォルトの名無しさん
垢版 |
NGNG
age
162デフォルトの名無しさん
垢版 |
NGNG
>>1
次はまだか?
163デフォルトの名無しさん
垢版 |
NGNG
        / ̄ ̄ ̄ ̄\
∧_∧  | ほげらっちょ!   |
 (;∀;∩)< ほげらっちょ! |
 (⊃   ) |          |
 人  ヽ´   \____/
 し'(__) 
NGNG
タペストリ
NGNG
Tapestryってなんて読むの?
NGNG
テープストーリー
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況