トップページphp
982コメント329KB

フレームワークStrutsをいじくり倒す人の為のスレ

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん03/04/28 08:14ID:Ub0n1fGR
 流行っているのか、流行っていないのか謎の Struts を語るスレです。
http://www.ingrid.org/jajakarta/struts/
http://jakarta.apache.org/struts/
0002ぼるじょあ ◆yEbBEcuFOU 03/04/28 08:20ID:???
   ∧_∧ パンパン  / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
   (  ・3・)       < ぼるじょあ兄妹がパンパンしながら2ゲットォー!!
   (  つ∋oノハヽo∈\_________________
    ) ,ィ⌒( ・3・)
   (_(__人__,つ 、つ
0003nobodyさん03/04/28 12:00ID:???
故・ぼるじょあ
0004みき(^-^) ◆MIKIDyAWSg 03/04/28 16:44ID:???
4げっと!
0005nobodyさん03/04/28 17:37ID:???
みきたんのおまんこげっと!
0006103/04/28 18:43ID:Ub0n1fGR
流行っていないことがわかりました・・・
0007nobodyさん03/04/28 20:40ID:???
オレの2ゲットが悪かったのかと反省してStrutsを入れてみた。
なるほど。最近やっとServletを使い始めたオレにはぴったりの勉強材料だ。
0008nobodyさん03/04/28 20:47ID:Pkujt7AF
ちょっと中途半端って感じかな。あんまりよくいじっていないけど。慣れるまで大変だし。
0009nobodyさん03/04/28 22:21ID:???
>>8
>慣れるまで大変だし。
そうでもないと思うぞ。やりはじめは確かに分かりにくいかも
しれないけど、1、2日で慣れたよ。

>ちょっと中途半端って感じかな。
仕様です。
0010nobodyさん03/04/28 22:43ID:???
>>9
おお、あんた、優秀な香具師なんだな、漏れ劣等生だから。ちと時間かかったのは確かす。
ASPに戻ろうかと思案中。
0011nobodyさん03/04/28 23:37ID:Ub0n1fGR
>>9
仕事で使っているけど、慣れるまで大変だよ。
Oracle とか IBM とかでも使っているよーなので、努力したいと思うのだが・・・
0012nobodyさん03/04/29 00:21ID:???
んな、無理に盛り上げんでも
0013nobodyさん03/04/29 09:56ID:6c9ghD2c
 ActionFormに無理やり色々詰め込むと、融通がきくことがわかってきた。
0014nobodyさん03/04/29 10:09ID:???
既存の技術に無理矢理OOP的な考え方をくっつけたという感じのフレームワーク。なんで中途半端って感じも。それでもJSPとかでゴリゴリロジック書くよりはラクだけど。
JSPやServletなどを知らない人がこのフレームワークをさわるのは難しいかな〜。
つうかそんな融通の利くフレームワークなんて無いと思うけど。
0015nobodyさん03/04/29 10:18ID:AXvmxaz8
>既存の技術に無理矢理OOP的な考え方をくっつけた
どこにそう感じるんだ?
「既存の技術」ってなんだ?

Strutsでまともに組んだことなさそ・・・っつーより、よくわかってなさそ。
0016あぼーんNGNG
あぼーん
00171403/04/29 10:39ID:8VlbjSE8
>>15
うん、じつは使ったことないし、よくわかってないんだ(笑)ごめんぽ。
00181303/04/29 10:59ID:6c9ghD2c
 ActionForm というフォームに対応するデータ・コンテナークラスと、
実際の処理を担当する Action、表示部分を担当する JSP、これらを統合
する struts-config.xml で構成されている。

 ActionForm - Action の関係は割合と捉えやすい。データをロードし
てから編集するときとかは、作業は楽だ。
 しかし JSP のコーディングが厄介。あらかじめ用意されている専用
タグを使うのだが、普通に Java のコード書くほうが数段楽だし融通が
きく。

 デザイン面は客の要求が厳しいところだし、現在かなり鬱になって
いる。
0019nobodyさん03/04/29 11:38ID:???
>>18
なんだ、専用タグをエディタでシコシコ書くの?じゃ、だめじゃん。もっとラクチンなやつはないのかね。ASP.NETとか。
00201303/04/29 18:05ID:6c9ghD2c
>>19
エディタで書けないもののほうが、あとあと困る気がするが。
専用タグが面倒なことは否定しないが、専用タグ使わないと MVC にならない。
0021nobodyさん03/04/29 18:55ID:???
>>20 確かにそーなんだろーけど、最初はツールで、あとで調整したい人はエディタでタグを、てなアプローチがいいんでは。最初からタグをエディタで書くというのは大変な労力じゃなかろうかと。そこらへんを便利にしてくれるツールはないの?
00221303/04/29 19:55ID:6c9ghD2c
>>21
ずっと最初からエディタで書いているから、ビジュアルな環境自体は不要なデベロッパーが多いと思われ。
それにデザイナーから出てきた HTML を書き換えていく事が多いから、便利ツールがあっても余り役に立たない気がするが?
もっとも、Struts はフレームワークであってツールで無いので、誰かがStruts 用ツールを書いてくれても問題ない。
0023nobodyさん03/04/30 00:26ID:7R70iZIR
>>21
IBMのWSADとかいうIDEがそのへんを面倒見てくれるはず。
0024あぼーんNGNG
あぼーん
00251303/04/30 06:35ID:/Snk6liy
Struts のタグの要素(例:onClick="")に動的な文字列を入れる場合、
onclick='return func(<%=Sample.getID()%>);' はだめだけど、
onclick='<%="return func(" + Sample.getID() + ");"%>);' は実行されるね。
デザインとコンテンツ分離していないな・・・しかし。
0026nobodyさん03/04/30 10:55ID:sH+8Jb43
>>25
>onclick='return func(<%=Sample.getID()%>);' はだめだけど、

なぜ動かないかが謎
00271303/05/01 13:43ID:1itvb5PA
>>26
Struts1.02 Tomcat4.06 J2SE1.41_02 での動作。
単に Struts タグのパースが甘いのではないかと思われ。
0028nobodyさん03/05/02 00:09ID:???
>>25-27
っていうかそれ JSP 拡張タグライブラリの仕様
00291303/05/02 04:03ID:CDnP+fh3
>>28
 知らんかった・・・逝ってきます。
0030あぼーんNGNG
あぼーん
0031nobodyさん03/05/02 11:45ID:U4GCg6UJ
4月からStruts勉強し始めました。
DBの抽象化、フォーム項目検査の共通化は似たようなことを自分でやっていたので、見つけたときはちょっと欝入りました(^^;

っつーことで、「フォームから送信された時にアクションBeanをマップして〜」というのは結構サンプルがWebや本にもある
のですが、他のWebなんかからクエリー文字列で送られてきたパラメータの解釈なんてーのはどうやるのでしょう?
これは多分どこかに答えがあると思うのですが、検索できませんでした(T_T)
多分、受け取るだけならbean:parameter でいいんでしょうが、その後のValidatチェックとかはどうすれば? というコトです。
やっぱり、Bean作ってプロパティに入れて、チェックは自分でシコシコと、なんでしょうか? 出来ればValidatorを使いたいの
ですが……。

あと、logic:iterate で、抽出条件などの初期値をbeanに指定するにはどうすればいいのでしょうか?
ワタシ的には

コレクションを含むBeanを定義。プロパティに抽出条件、抽出実行メソッドを定義
 ↓
JSP内でBean作成。プロパティに抽出条件をセット
 ↓
JSP内で抽出実行メソッドを実行
 ↓
logic:iterate にBeanとコレクションを設定。

……で、いいかなぁ、と思っているのですが「JSP内にスクリプト書いちゃっていいのかなぁ? それともタグライブラリで
出来るのか?」と思い、まだ試していません。多分、これもどこかに答えがある(絶対みんな使うはずだ(^^;))と思うのですが、
これもまだ検索できていません。

以上、「このページを見ろ!」だけでも教えていただけると助かります。よろしくお願いします。
0032nobodyさん03/05/02 13:04ID:NXr20aw7
>>31
Struts使うんなら基本的にJSPには直接アクセスさせないで、必ずActionを経由
するようにしないと、あちこち破綻しまっせ。
00333103/05/02 13:21ID:U4GCg6UJ
>>32

>Struts使うんなら基本的にJSPには直接アクセスさせないで、必ずActionを経由
>するようにしないと、あちこち破綻しまっせ。

他のWebや本でもそう書いてありますね。ということはやはりbeanタグを使うのでしょうか?
そのあたり、どこかに書いてないモノでしょうかねぇ( ´∀`)
※探してるけどやっぱり検索できない(T_T)
0034nobodyさん03/05/02 13:55ID:L5fY5Do4
なんか言ってることがトンチンカンなんだが、ちゃんと勉強してる?
ちなみにバージョンは?
00353103/05/02 14:41ID:U4GCg6UJ
>>34
すみません。多分「ちゃんと」は勉強してません。本とWebの拾い読みです(拝)
バージョンは1.1を使おうと思っています。
0036nobodyさん03/05/02 15:53ID:L5fY5Do4
1.1なら、xmlだね。
00373103/05/02 16:21ID:U4GCg6UJ
>>36

も、もう少し詳しく(^^;
0038あぼーんNGNG
あぼーん
0039nobodyさん03/05/02 23:45ID:CDnP+fh3
>>31
 GETのオプションも ActionForm の中に入ると思った。
 Action に飛ばすのが推奨だけど。
0040あぼーんNGNG
あぼーん
00413103/05/03 03:10ID:4TfEEb3W
>>39
えと、ごめんなさい。誤解があればご指摘を。

……それは、「hogehoge.do?hanya=1」という風にURLで呼び出す、ということでしょうか?
で、表示に必要な情報はBeanに入れてセッションで保持して次のページで表示、ということでしょうか?

うーん、自分で書いてて、何かが違うような気がする……
0042nobodyさん03/05/03 16:02ID:t0/6rwZ0
>>41
 ActionForm からは Action を必ず呼び出すのが推奨だが、
リンクさせたいだけなら、<%= %> とコードをかいても、
<html:link> タグを使ってもいい。
0043nobodyさん03/05/04 01:07ID:M8Vf8h8D
>>42
ActionForm から Action を呼び出すって...
もうすこしわかってから人に教えようよ...
0044nobodyさん03/05/04 02:08ID:tPLquQaP
>>43
ActionFormと結び付けられていないJSPから、Actionを呼び出すの?(笑)
0045nobodyさん03/05/04 02:46ID:M8Vf8h8D
>>44
42の人ですか? 本格的にわかってないのかな...
・ActionForm と Action には呼び出し関係はありません
・ActionForm は Action の引数として渡されます
・ActionForm にリクエストパラメータを設定して
  Action を呼び出すのは ActionServlet です
0046nobodyさん03/05/04 03:49ID:tPLquQaP
>>45
Strutsいじったこと無いのかな...
0047nobodyさん03/05/04 03:55ID:tPLquQaP
>>46
とはいいつつ、意図の補足。

>>41 の話をきいていると、JSP ファイル間でリンクを貼りたいと
いいたいように見えるが、Struts では Struts に従った JSP ファ
イル(ActionForm と関連付けられたフォームを持つ)からは、
Action での処理に移るのが推奨になっている。

だから struts-config.xml で ActionForm を連携している JSP
ファイルからは、他の JSP ファイルに直接リンクを貼るのは望ま
しくないと書いた。

>   Action を呼び出すのは ActionServlet です

 これ自体は間違っていないが、ActionServlet を自分で書かないよな?
00483103/05/04 13:46ID:p4vaAgcq
>>47

>>41 の話をきいていると、JSP ファイル間でリンクを貼りたいと
>いいたいように見えるが、Struts では Struts に従った JSP ファ
>イル(ActionForm と関連付けられたフォームを持つ)からは、
>Action での処理に移るのが推奨になっている。

大体あってます。が、「JSP同士」では無く(まぁそういうこともあるでしょうが)

1.他のサイトからリンクされてる
2.スタティックなHTMLからリンクしたい
3.ビュー側で初期値を与えたい
4.その他、「諸般の事情」でどうしても初手はGETでしかリクエストできない

ようなとき、抽出条件その他の初期値を与えたい場合、どのように処理をすればいいのか、ということです。
>>41では、抽出結果をいちいちセッションで保持するのはメモリの無駄のように思えましたが、考えて見れば
ビュー側で表示が終わったら明示的に消去すればいいんですよね? だからやっぱり>>41で書いたように

hogehoge.do?hanya=1でGETでリクエスト
 ↓
Actionクラスで条件をValidatしビジネスロジックを実行
 ↓
抽出結果をBeanに格納しセッションで保持
 ↓
ビュー側でBeanの内容を表示
 ↓
表示し終わったら、セッションの内容を明示的に破棄(Nullを入れる)

というストーリーでいいのかな、と思いましたが、これだと3.が実現できないんですよね。
どうでしょう、こういうことをした人はいます?(^^;
0049nobodyさん03/05/04 18:56ID:tPLquQaP
>>48
>ビュー側で初期値を与えたい
 ActionForm に初期値をセットすればいいのだと思われ。
 外部から直接、〜.do にアクセスが飛んだ場合でも ActionForm の
インスタンスは作成される。
 コンストラクタか、初期値でモゴモゴっと処理してしまえばよい。

※ ただし推奨方法なのかは謎
0050あぼーんNGNG
あぼーん
0051あぼーんNGNG
あぼーん
00523103/05/04 23:36ID:p4vaAgcq
>>49
そうか、基本のActionFormは作っておいて、おっしゃるとおりコンストラクタか、初期値を設定するメソッド
(まぁ、グローバルなプロパティでもいいんでしょうが)をオーバーライドして、ビューの数だけ継承しながら
作っていけばいいんですね?

出来ればビューだけで解決したかった(HTMLデザイナーに微調整は全部やらせたかった(^^;))のですが、
考えて見れば(MVCの概念では)抽出条件とかってビューには含まれませんものね。

了解しました。この考え方でプロトタイプを作って見ます。アドバイスありがとうございました(拝)
0053nobodyさん03/05/05 12:27ID:JAcSDFlc
ハゲシク使い物にならない、MVCにもなってないプロトが出来上がりそうだな。
それを使わされる下の人間いるの?なんか可哀想だな(ゲラ
0054あぼーんNGNG
あぼーん
00553103/05/05 21:29ID:fyscN38j
>>53
申し訳ありませんが、問題点があれば具体的にご指摘いただければ助かります。
是非ともよろしくお願いします。
0056nobodyさん03/05/05 22:56ID:???
技術評論社が出した「Jakarta Project徹底攻略」を
よんでstrutsの使い方を把握し実際に動かすことに成功したが
あの本を読んでいる限りは、struts-config.xmlファイルの設定が面倒くさそう。
Beanを追加すればするほど肥大化はいやなもんじゃ。

JavaServerFacesに期待しているのだがどうなのだろうか?
0057nobodyさん03/05/05 23:07ID:TDsoNdrN
53ではありませんが。

>>55
もう解決したようですが「Viewで初期値を与える」という発想が
間違いのもとです。
それと>>52で書かれていることも意図が掴めません。

普通に作っていけばActionとActionFormのサブクラスが機能の
数だけ作られて、それで何も混乱の元は無いように思うのですが。

0058あぼーんNGNG
あぼーん
0059nobodyさん03/05/05 23:13ID:TDsoNdrN
>>56
struts-config.xmlを手でいじるのが嫌なら、IBMのWebSphereに付いてる
IDEか、Scioworks CaminoやEclipse用プラグインなどを使うがよろし。
俺はXML手書きのほうが手っ取り早いので使っていませんけど。

http://www.scioworks.com/
http://w3.cube-web.net/eclipse/index.php?%5B%5BStruts%A5%D7%A5%E9%A5%B0%A5%A4%A5%F3%5D%5D

JSFに関しては、既存のWebアプリケーションのビジネスロジックは
修正せずに、StrutsカスタムタグをJSFコンポーネントタグに
置き換えられるようにするstruts-facesというライブラリが
あります。まだexperimentalですが。
http://cvs.apache.org/builds/jakarta-struts/nightly/struts-faces/
0060nobodyさん03/05/05 23:22ID:TDsoNdrN
CraignのJSFに関する見解はこのあたりに。
http://jakarta.apache.org/struts/proposals/struts-faces.html
0061あぼーんNGNG
あぼーん
00623103/05/06 00:51ID:OVvSof92
>>57
そうですね。ちょっと整理しましょう。今回解決すべき問題点は二つでした。

(1)システムが動くサーバの外から、抽出条件のパラメータが付いたGETリクエストが飛んでくる。
(2)デザイン的に、ビュー毎に.表示する情報の抽出条件を変化させる必要がある。

で、解決方法として

(1)については、URLを「hogehoge.do?hnya=1」等と記述してもらうことでアクションサーブレットを起動し、あとは通常のStrutsの処理フローに乗せる。
(2)については(MVCの考え方で行けば)抽出条件というのはビューに含んではいけない。たとえビューと一対一で対応するとしても、それぞれに
抽出条件などを設定したコントローラ(=アクションクラス)を用意すべきである。

と理解した。ということです。
0063nobodyさん03/05/06 01:42ID:???
>>31
そもそも解決すべき問題点は、おまえさんの「日本語能力」にあると思うのは漏れだけだろうか。
内容意味不明だし、一体何が知りたくてココに書いてんだ?って感じ。
おまけにStrutsのドキュメント、まともに(全く)読んでない(読めない)感すらある。
■ このスレッドは過去ログ倉庫に格納されています