△△もまいら漏れにStrutsの良さを教えてください

このエントリーをはてなブックマークに追加
1デフォルトの名無しさん
Strutsマンセーな記事をよく見かけるようになったさっこん。
それでも、漏れにはStrutsの良さがよくわかりません。
めんどくさいだけじゃないかと。
普通にサーブレット&JSPでいいじゃないかと。

そこでもまいらにお願いです。
こんな漏れにStrutsの良さを語ってください。小一時間語ってください。
どんなときに使うとイイのか教えてください。
ストラトスって読んじゃだめな理由もついでに教えてください。
2:03/03/19 08:45
何て読むか教えれ
3デフォルトの名無しさん:03/03/19 08:51
すとらうすとらっぷ
           _∧_∧
        / ̄ ( ・∀・)⌒\ ガッ!!
   __    /  _|     |   |
   ヽヽ   /  /  \    |   |           ,,,,,,,iiiiillllll!!!!!!!lllllliiiii,,,,,,,
    \\|  |____|   .|   |           .,llll゙゙゙゙゙        ゙゙゙゙゙lllll,
     \/  \       |   |           .|!!!!,,,,,,,,       ,,,,,,,,,!!!!|
     | ヽ_「\      |   |、         |  ゙゙゙゙!!!!llllliiiiiiiiiilllll!!!!゙゙゙゙ .| 
     |    \ \――、. |   | ヽ         .|     .゙゙゙゙゙゙゙゙゙゙     |
     |   / \ "-、,  `|  |  ヽ       |               |
  _/   /    "-, "' (_  ヽ  ヽ      .|               |
/    __ノ      "'m__`\ヽ_,,,, ヽ      |               |
`ー― ̄          ヽ、__`/ー_,,,, ゙゙゙゙!!!!!!!lllllllliii|               |
                    \゙゙゙゙゙゙゙!!!!!lllllllliiiii|               |
                      \   ヽ   |               |
                       ヽ   \  |               |
                        |     \.|               |
                        `ヽ、,,_ノ|               |
                              ゙゙!!!,,,,,,,,       ,,,,,,,,,!!!゙゙
                                   ゙゙゙゙!!!!llllliiiiiiiiiilllll!!!!゙゙゙゙
                                /.// ・l|∵ ヽ\  ←>>1


なんつかw
JAVAに賭けてた人とかかわいそうだな
つーかさ、Javaスレ立てすぎ。
7ほんものの1 ◆lqgT6FBSpw :03/03/19 09:56
ストラッツってどうよ?
8ほんものの1 ◆lqgT6FBSpw :03/03/19 09:59
>>5
Javaが理解できなかった人もかわいそうでつね。
9デフォルトの名無しさん:03/03/19 10:00
ストラッツって言語?
10デフォルトの名無しさん:03/03/19 10:00
strut (名詞) [=struts]
支柱
気どった歩きぶり
strut (動詞) [=strutting, strutted, struts]
(自動詞)
気どって歩く
11bloom:03/03/19 10:08
12ほんものの1 ◆lqgT6FBSpw :03/03/19 10:16
>>9
Webアプリケーション用のフレームワークでつ。
Strutsの良さ?
あるわけねーだろ。(w
ASP.NETに遠く及ばない糞フレームワークを持ち上げて、提灯記事も必死だな。(藁
ASP.NET と比べてる辺り Struts が何か知らないだろ。
糞であることには変わりないが。
15デフォルトの名無しさん:03/03/19 11:19
Javaをやってる人は
専門出のDQNか
馬鹿なベンチャー屋
しかいません。
言語設計は(教育用としては)素晴らしいですが
実用には向きません。そういうことをちゃんと部下に教えないといけません
JSPがわかってもアパッチのインストすらできないようでは
明日の日本はありません
>JSPがわかってもアパッチのインストすらできないようでは
プ
17デフォルトの名無しさん:03/03/19 12:06
>>1
じゃあ、ひとまず Java Server Faces (提供する機能は Struts とほとんど一緒)
を再評価してみてはどうか。
>>15

> 実用には向きません。

いや、向きますけども。
>>17
>Java Server Faces (提供する機能は Struts とほとんど一緒)

ただのASP.NETのパクリ。(プ
20デフォルトの名無しさん:03/03/19 12:34
>>18

教育用は実用に使えないという法則がどっかにあったような気がするけど
Javaはそうでもないと思う。
>>20
ということにしたいのですね?
みんないいように騙されてるねえ。(w
UNIXの巨大サーバー上で動かしてるからこそ、かろうじて運用に耐えてるだけなのに。(w
本当に使えるものなら、Windowsの中規模サーバーで大体は間に合うはずなのに。(w
それこそASPみたいにね。
このジョークを地で行ってるのがJavaだね。(ゲラ

http://hp.vector.co.jp/authors/VA000092/jokes/strup.html

> 本当のところ、私はC++でDOSを書きました。 これが終わったら、
> デモ版をお渡ししましょう。 コンピュータルームのSparc 20で
> ずっと走らせています。4 CPUでロケットのように速く動きますし、
> たった70MBのディスクしか消費しません。
>>22

> 本当に使えるものなら、Windowsの中規模サーバーで大体は間に合う

Windows でも Linux でも間に合ってますが?
>>24
どうせ社内でしか使わないショボシステムだろ?(ゲラ
アンチ Java の人ってみんな文体が同じだね。
>>26
中の人が全員おんなじなんじゃない?
>>27
ゲラとか嘲笑激藁とかプとか大爆笑とか書いてる奴だろ
タイミングよく不自然に連続投稿しているところがあいつらしい。
>>27-28
>>15がアフォなだけ
>>6
そうでもないやん。

まあいいんじゃね?
WebProg板はPHPスレでほとんどうまってるし。

Javaという言語がそれだけ幅広い分野で使われてるってことなんだから
一口にJavaといってもさまざまな分野があり一つのスレだけでは語りきれないんだし。

ところで >>6 はJavaの代わりにどんなスレをたてて欲しいんだい?
>>30
新言語 さくらたんヽ(´ー`)ノ
今はstrutsよりJavaServerFacesやTurbineに魅力を感じるぞ。

strutsは便利だけどBean追加のたびにstruts-config.xmlファイルの書き換えが面倒。


>>19
ASP.NETもstrutsやJSPカスタムタグのパクリでもあるのだが(w
そしてC#もJavaのパクリ。
33ほんものの1 ◆lqgT6FBSpw :03/03/19 19:17
>>17
Java Server Facesって、HTMLフォームをそれぞれカスタムタグにしただけだと思ってた。
画面遷移の管理もあり?
すとらっつ
設計が簡素化できるし、作りが単純なので展開しやすいので、割と好きです
Turbineは一度使ってみたいけど、情報がとぼしいので触ってないです^^;
35ほんものの1 ◆lqgT6FBSpw :03/03/20 03:27
>>34
>設計が簡素化できるし

ここがすごく疑問なんですよね。
ちょっと詳しく教えてもらえませんか?
36デフォルトの名無しさん:03/03/20 08:07
>>32はWeb+DB Press vol13を読んで感化されている予感
>>36
お前だろ
あげんな、
誰もんな糞雑誌読んでねーよ
表紙がなぁ。。。萎
3932:03/03/20 13:36
>>36
いや、"Jakarta"を鵜呑みにしただけでした(w
なかなかおもろい雑誌だったや
Javaに不満ある香具師が多いのは分かるよ。何かと冗長なんだよな。シンプルなウェブシステム作りたい場合は特に。

サッと作りたい場合はRubyってことになるかな。CGIKitとかWEBrickとかウェブフレームワークも充実していて作りやすい。
Rubyのフレームワークってどんなの?
Strutsに対応するものってあるの?
>>41

http://rwiki.jin.gr.jp/cgi-bin/rw-cgi.rb?cmd=view;name=Web%A5%A2%A5%D7%A5%EA%A5%B1%A1%BC%A5%B7%A5%E7%A5%F3%A5%D5%A5%EC%A1%BC%A5%E0%A5%EF%A1%BC%A5%AF



最大の難点は開発環境が無いことだな。悲しい現実を言うならば、ツールが無いからJavaより面倒ってこともあるよ。
4334:03/03/20 23:15
>>35
詳細設計から実装へ、比較的機械的に落とせます

・画面遷移図作成→struts-configに変換
・画面入出力項目→ActionFormに変換
・画面処理    →Actionに変換

この辺決めるのに設計的な判断がいらないです。
これらをコードに埋め込まざるを得ない、べたサーブレットよりはマシです。

とはいえTaglib覚えたりStruts-Config覚えたり色々敷居は高いですが・・・
44ほんものの1 ◆lqgT6FBSpw :03/03/20 23:50
> 詳細設計から実装へ、比較的機械的に落とせます

あぁ、そういうことですね。

StrutsのTaglibは、ほんとに価値が感じられないので、使う気はないです。
どうなんでしょう。。。
45ほんものの1 ◆lqgT6FBSpw :03/03/20 23:52
>>42
よく見てないけど、思ったのは、Rubyって(使えるとか使えないとかは置いといて)楽しそうですね。
46デフォルトの名無しさん:03/03/21 00:35
>>44

Taglib使わなかったら、Strutsを使う意味もないでしょ。
47ほんものの1 ◆lqgT6FBSpw :03/03/21 00:44
>>46
そうなの?
あのTaglibって、なんかいいとこあるの?
48デフォルトの名無しさん:03/03/21 01:08
>>47

全部使ったわけではないけど、html、logic、beanは使えたよ。
特に、htmlは使った方がよい。
49ほんものの1 ◆lqgT6FBSpw :03/03/21 01:18
>>48
そうかなぁ。。。
変なタグ使っても、デザイナがわからなくなるし。
リンクのタグはStrutsのしくみ使う上で必要だろうけど。

フォームのタグは、同じようなものをもってない人には便利なんだろうけど。
みんなそれなりに作ってるんじゃないの?自分なりに便利なの。

logic/beanって何があるの?
5048:03/03/21 01:40
>>49

Formタグと同等の機能を自分で作成したとして、それを使うのに
どれだけの労力を必要とするかだね。

それだけの労力を使って作成したものを新しく入ってきた人に教
える必要があるとしたら、ドキュメントのそろっているStrutsと
の差は歴然としていると思うよ。

今、うちでは日本語があまり出来ない韓国人がいるけど、Struts
は韓国語のページがあるから、説明もほとんど必要ない。

logicですが、iteratorなんかは便利でしたよ。
equalなどはだめですが。
51ほんものの1 ◆lqgT6FBSpw :03/03/21 01:58
>>50
> Formタグと同等の機能を自分で作成したとして、それを使うのに
> どれだけの労力を必要とするかだね。

実際には、同等ではなく、自分達が作るものに適した機能をもってるんだけどね。
だから、ドキュメントが相対的に貧弱であっても、やろうとすることに似たものがたくさんあれば、あまり問題にはならない。
結局Strutsのタグ使っても、その差の部分は自作する必要があるわけだし。
その自作のやり方を教える方が労力がかかると思われる。

でもドキュメントは同意。
日本語のドキュメントなら問題ないし、英語でもそこまで問題ではないけど、他の言語は無理だね。
使いつづけてるうちはいいけど、

iteratorって、JSTLのforeachよりも便利?
つうか、カスタムタグはJSTLにとりあえず一本化してほしい。あ、だからJSFか。
52デフォルトの名無しさん:03/03/21 02:28
getter/setterを作るのが面倒い
53デフォルトの名無しさん:03/03/21 04:30
つくったばっかでださいけどよろ
http://www.h4.dion.ne.jp/~pc-pow/
54デフォルトの名無しさん:03/03/21 10:01
Struts解説

Struts ファンページ in Japan
http://homepage2.nifty.com/ymagic/struts/realindex.html
糞だろうが何だろうがさっさとオプソ化したものがデファクトスタンダード
取るという実例だな。
>>53
どこにstrutsが使われているのかJSPが使われてるのかServletがつかわれてるのか
わからん。
57デフォルトの名無しさん:03/03/21 10:39

パンツアニメ?

58デフォルトの名無しさん:03/03/22 00:34
>>56
サイトの宣伝は放置しろよ。
59 :03/03/22 01:49
StrutsのTaglibって少しショボイ。痒いところに手が届かない。
だからJSTLや自作のTaglibと併用してる。
60ほんものの1 ◆lqgT6FBSpw :03/03/22 02:20
ようするに、Strutsいいよぉ、っていってるのは、Taglib含めてのことなのですね?
画面遷移管理だけじゃなく。
61デフォルトの名無しさん:03/03/22 08:33
仕様を覚えなくてはならないというデメリットがあります。
























>>61

その覚えた後の(ウェブプログラミングの設計についての)学習効果を加味するとどうですか?
>>61,63
Strutsじゃなくてフレームワーク全般に言えることだね。
覚えるための手間がかかるが、覚えた後の効果が高い。
で、苦労して覚えた後に「たかだかこの程度かよ!」という屈辱感を
味わうな。詐欺に気付いたような感覚が。

ここで2種類の人間に分かれるな。全てを捨てて糞と言い切れる
奴と、騙されたのを認めたくないのか無理なマンセーに走る奴と。
>>65
その2種類は覚えるのに苦労した低脳な人間に限定される話。
覚えるのにそれほど苦労しない人間なら「この程度かよ」でも
それほど悔しくないし、使える範囲で適当に使える。
67デフォルトの名無しさん:03/03/22 23:25
仕事でやってるやつはすべて1から作るより
信頼性も開発スピードもUPするから使ったほうがいいに決まってる
個人でやってるやつはどっちでも好きにすれよ
68デフォルトの名無しさん:03/03/23 07:59
フォームをまったく使わないページだと
普通に作るのとたいしてかわらない。
69ほんものの1 ◆lqgT6FBSpw :03/03/23 09:09
>>68
やっぱりTaglib使わないとStruts使う意味ないのかな。
70デフォルトの名無しさん:03/03/23 11:25
Java Server FacesがJCP(Java Community Process)で標準化されれば
strutsの立場も危うい
71ほんものの1 ◆lqgT6FBSpw :03/03/23 12:12
WEBDBPRESS13読んだだけではよくわからなかったんだけど、JSFには画面遷移管理も含まれるのかな。
72デフォルトの名無しさん:03/03/26 03:00
struts1.1b1に対応した解説書でるぞい。
今日amazonで発見。早速メーカーにメール。
どうも1.1b3でも動作確認はしているらしい。
半年ほど前に1.1b2で開発したときは英語しかドキュメントなかったなー。
これでstruts使える香具師増えるかも。
73デフォルトの名無しさん:03/03/26 03:18
>>67
似たようなものを自作するより、安くて速くて(多分)安全だから使う
だけだよね。

日本では、二番煎じではるかに糞なフレームワークが量産されてますよ。
人が造ったの見ると、作るの簡単そうに見えるのね。
でも、サーバーサイド開発の留意事項の全てを知って作ってるわけじゃ
なくて、マヌケなミスが混じって使い物にならなくなる、というのが
王道的パターン。
74デフォルトの名無しさん:03/03/26 18:15
>>70-71
JSFなかなかよさげですね。
.NETの猿真似と言われようと、やはりこういうのはニーズが多いだろうからね。
つーか、サーブレット API 自体が CGI に毛の生えた程度だったから
こうもフレームワークが乱立する状況が生まれたわけだ。
>>74
いや、ASP.NETがJSPカスタムタグライブラリの猿真似なんだよ
>>75
結構毛深いな、おい。
7874:03/03/26 18:33
>>76
ありがトン。そうなのか、じゃあ俺はMacがWinをパクったんだとか
ロードオブザリングがハリポタをパクったんだとかいうのと
同じのを信じてたわけかな。(鬱駄
ttp://www.geocities.jp/fieldabout/
世界の仕組み研究所!!

おまいらみたいな無知君はおいらのページでも見て1から勉強しろでつ。
リンクフリーだけど直リンすんなよゴルァ。
おいらに勝てるヤシはかかってこんかい。
>>79
所詮、HSPはstrutsほどには及ばない。
81デフォルトの名無しさん:03/03/26 23:56
>>76
>いや、ASP.NETがJSPカスタムタグライブラリの猿真似なんだよ
これを主張するのならば、JSPはASPの猿真似でしかなくなってしまうよ。
(つうか、タグライブラリを待つまでもなく、perlで事前コンバート(タグ
 拡張など)後に自動配置くらい、ずっと前から誰でもしてることだろ?)
>>81
名前を付けて標準化することの価値がわかってないやつはプログラマ失格
83デフォルトの名無しさん:03/03/27 01:00
>>82
はげ道。
デザインパターンなんかそうだよね
デザパタ読んで、名前を標準化する以外の意味がないと思えれば、上級者といえるだろう。
カスタムタグライブラリの仕掛け自体は用意されたけど、「名前を付けて標準化」を
されたのってそれほど前ではなかったですよね。
ASP.NET発表のどれくらい前の話なんです?
86デフォルトの名無しさん:03/03/27 01:10
>>84
おみそれしやした
.NETとJ2EEのように、おなじ時期の同じ枠組みの中の同じターゲットの技術について、どっちが先とか後とか言ってても、不毛だとおもふ。
>>84
この板でも
「デザパタに書いてあるパターンなんか、俺なんてずっと前から使ってたし、デザパタだせぇ」
みたいな勘違い君の書き込み、よく見かけるね。
8988:03/03/27 01:16
「デザパタに書いてあるパターンなんか、俺なんてずっと前から使ってたけど、そのパターンをまとめて名前付けたら便利なんて考えても見なかった。
ガンマタンはネ申」
と思うのが上級者ということですね。
>>87
結局、#76がJava厨の妄想で、#81がAPS厨(?)の妄想ってこと?
911 ◆lqgT6FBSpw :03/03/27 01:28
シーソーにのってれば、どの時点をとっても、その時点かその直前で自分が上にいたと言える。

Java相談スレが1000逝って次スレがなくかったら、こういう話題がこのスレで繰り広げられるってことは、Java相談スレは隔離スレとして機能してたということになりますね。
92デフォルトの名無しさん:03/03/27 02:15
この前のプロジェクトでは開発初期はStrutsだったんだけど
だんだん置き換えてほとんど普通のServlet/JSPになってしまった。
ちょっとJavascriptとかつかって離れ業をやるインタフェースが
多かったのでTaglibとか使いづらくてしょうがなかった。

でも、簡単にデモンストレーションとか作るんだったら、悪くないなー
そのあとのことはしらないけど
>>92
離れ業JavaScriptをカスタムタグライブラリにすべきだったかと。
9493:03/03/27 02:18
Webで探すと、そういうことやって売ったり配ったりしている奴が
いるよ。外人だけど。
>>94
ガイジンっていうと、アメリカ人かヨーロッパ人・ロシア人のことを指して、韓国人とかイラク人とかは入らない罠?
96デフォルトの名無しさん:03/03/27 08:20
フォームのないページでStrutsを使う意味ってある?
97デフォルトの名無しさん:03/03/27 20:31
まあ、
使ったこと無いやつは一回使って
理解してからもう一度自分にその質問を問い掛けてくれ
っていうか、フレームワーク自体に
手を出すのが億劫なんだろ?

>>67>>73のように、理由はちゃんとある
ついてこないやつは別にお好きにどうぞ
98デフォルトの名無しさん:03/03/27 22:16
>>97
そのフレームワークが一体何を楽にしてくれるのかを理解するまでは、
単なる作業だからな。見返りの保障ナシに、理解に工数突っ込むのは
それはそれで問題かも。
99デフォルトの名無しさん:03/03/27 23:52
>>98
まあ、物事にたいして「知りたい」という好奇心旺盛な気持ちを持たないやつのほうが、プログラマとして問題だ
フレームワークが提供してくれるものに疑問をもったときに、「無駄かもしれない」と思いながらやるのは蛮勇。
>99
理想論としては然り、だけどこれだけ各種技術が溢れると好奇心の赴くままに
全部を吸収するなんて出来ない。

当然どこかで取捨選択が必要なわけで、そうなれば「何がいいの?」って
概要くらいは聞きたくもなる。

もっともWebプログラマならStrutsの勉強くらいしとけとは思う。日本語の
記事だって半年くらい前から見かけるじゃないか。
102デフォルトの名無しさん:03/03/28 09:00
まぁ、藻マエらは、オライリーの
Programming Jakarta Strutsを買えってこった!
>>102
邦訳あり?
104デフォルトの名無しさん:03/03/28 11:44
>>72
書名と著者および出版社が知りたい。

105デフォルトの名無しさん:03/03/28 23:40
JSPでのフォームの代わりに、Appletを使うことは可能ですか??
>>105
Applet使うなら、JSP使う必要ないじゃん。
HttpConnection使って直接HttpServletと通信しろ。
>>104 コピペして検索汁。因みに邦訳は4/16発売予定
108デフォルトの名無しさん:03/03/29 03:32
パフォーマンスにうるさい案件でつかえるだろか?
この手の話題はみたことがない。

まぁ、フレームワークなんて使うなといわれそうだけど。
>>108
Strutsがボトルネックになることは少なそうだが。
110107:03/03/29 13:33
ごめん。マスタリング〜と間違えた。プログラミング〜は邦訳は出ないのかね。
http://www.amazon.co.jp/exec/obidos/ASIN/0596003285
http://www.amazon.co.jp/exec/obidos/ASIN/B000086ZSW
http://www.amazon.co.jp/exec/obidos/ASIN/4798103667
まあ、原書買っちゃってるから出るとかえって悩ましい
>>106
>Applet使うなら、JSP使う必要ないじゃん。
んなこたぁない。
Applet専用のJSPタグがあるやろ
<jsp:plugin>と<jsp:param>だったと思ったが。
>>111
まぁ、>>105の質問が見当外れなわけだが。
>>111
それは、単にJSPの出力であるHTMLにAppletを呼び出すタグを埋め込めるとか
そういうことでしょ。

プロセス実体がどこで何をやるかの切り分けが分かってないな、お前。
>>113
そううことは>>106に言え
>>106の質問が曖昧すぎなんだよ。
しかも>>106はプロセスのことを言い出したかお前
>>114
 >>106ではなく>>105
1161 ◆lqgT6FBSpw :03/03/30 02:04
StrutsのlogicタグはJSTLに、beanタグはELになって用無し、ということでいいでつか?
htmlタグはJSF次第?
117デフォルトの名無しさん:03/03/30 10:22
setterやgetter作るのめんどくさい。
setter やら getter やら自動生成するマクロ作るとか、
自動生成してくれる機能が付いたIDE使えば?
今時データしまっとくだけのBeanを手書きしてる人はかわいそうデツネ。
>>119
JSTL使う前提で、Mapで代用してますがなにか?

データしまっとくBeanならまだいいんだけど、Servlet->JSPにわたすだけにBeanを作るのはどんなツール使ってもめんどくさい。
121デフォルトの名無しさん:03/03/30 11:30
>>117
IDE使うか、エディタのマクロ機能使うか、1.1でDynaActionForm使うか。
>>117
Caminoを買え
DynaActionFormってただのMapでしょ?
バグ増えそう
124デフォルトの名無しさん:03/03/30 14:39
おいおまえら、オープンソースってものが
どれだけ多くの人にテストされてると思ってんだ?
これほど信頼できるものは無いぞ
>>124
オープンソース一般はあてはまらないよ。
Jakartaのプロダクトでもマイナーなものはしょうもないバグあるし。

さらに話題読み違えてるし。
×バグ多そう
○バグ増えそう

ex.Perlにどんなにバグがなくても、Perlで作ったスクリプトはバグがJavaのプログラムに比べて多い。
>>123
バグって、アプリケーションのバグのことだよね?
たしかにDynaActionForm使うとプロパティ名間違えても実行時までわからないとか
IDE使ってもgetter/setterのメソッド名の自動補完機能が使えないとか
不便なこともある。
オープンソースは開発に費用をかけられないデメリットがあるからな。
128デフォルトの名無しさん:03/03/30 18:59
>>117
まさかテキストエディタでコーディングしてないよな?
Eclipse使え。
129117:03/03/30 19:31
結構釣れたな…
釣り日和でつ。
                       ,
                      ,/ヽ
                     ,/   ヽ
            ∧_∧  ,/      ヽ
           ( ´∀`),/          ヽ
           (  つつ@            ヽ
        __  | | |                ヽ
      |――| (__)_)                ヽ
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄|                ヽ
/⌒\/⌒\/⌒\/⌒\|彡~゚ ゜~ ~。゜ ~ ~ ~ ~~ ~ ~~ ~ ~~ ~~ ~~
⌒\/⌒\/⌒\/⌒\/⌒\彡 〜 〜〜 〜〜 〜〜 〜 〜
おまいら、Strutsなんてつまんないもの使ってないで、
WebObjectsでも使えよ。
おまいら、いい加減JSPから卒業しろよ。
133やすだけい:03/03/30 20:54
>>132
卒業=解雇でつか?
134デフォルトの名無しさん:03/03/30 21:43
>>110
うわっ。邦訳されるのはよりによってManingのMastering Jakarta Strutsなのか。
類書の中では一・二を争う糞だと思うのだが。
『Struts&タグライブラリ』なんてのとか、邦訳はダメなものから順番か?

135デフォルトの名無しさん:03/03/30 22:23
いま、サーバーサイドでこれから伸びそうなのって
どんなのあるんですか?
EponicsFastがよさそうなんですが・・・
136123:03/03/30 22:25
>>124
そうくるとはおもわなかたYo!

>>126
そうです。
実際つかってみたらどうなんだろう、とおもってましたがやっぱそうですか。
RAD向きという印象・・・
>>136
あんたの会社の大してできがよいわけでもない連中が作って、そいつらが
自分の都合でテストしただけの怪しいフレームワークよりは、よく使用さ
れているオブソの方が信用できるさ。
>135
なんか訊き方がニャガオっぽい
139123:03/03/30 23:18
>>137
流れ嫁Yo!
ちなみに137(=124?)の意見には完全同意です
140123:03/03/30 23:35
あーなんか俺が流れ読めてなかった
逝ってきます・・・
>>140
>>137の方が流れが違う気がするのだが。
少なくとも>>137>>136は話題の層が違う。
フォーム作るたびにわざわざフォームクラスを定義するのはアフォだと思う。
キーと値しかないんだから HashMap で十分だ。
今初めてStrutsを使ってサンプル作ってみたんだけど、どうなんだろ?
なんていうか『楽な気がする』って感じかなぁ?
でも我ながらみんなが『Struts便利!』って言ってるからそう感じるのかなって
気がする。。具体的にはどう便利なんだろ?
・taglibが便利?(使い慣れてないから分からないが iterate 等のいかにも
便利そうなものは既に自作してあるからなぁ)

・画面遷移がxmlファイルで指定できる(これはいいかも)

・フォームの受け取りが楽?

でも何も考えずに作ってもMVC(っぽい感じ)になるのは楽かもなぁ。
…ってか何度やってもActionFormのvalidateに処理がいかない。。

質問なんですけど、Strutsで開発すると検索などで使う単純なフォーム
(googleのトップにあるようなやつ)でもActionForm作るんですか?
144143:03/04/04 05:29
なんか支離滅裂だぁ、スマソ
眠くて。。
>既に自作してあるからなぁ
スタンダードである、多くの技術者に認知されているということの
重要性をわかっていない香具師がまた一人。
1461 ◆lqgT6FBSpw :03/04/04 12:38
>>143
>質問なんですけど、Strutsで開発すると検索などで使う単純なフォーム
>(googleのトップにあるようなやつ)でもActionForm作るんですか?

漏れも知りたい

iterateなんかのlogic系はJSTLがあるから要らない。。。
147デフォルトの名無しさん:03/04/04 12:47
classとどう違うの?
>>146
> >>143
> >質問なんですけど、Strutsで開発すると検索などで使う単純なフォーム
> >(googleのトップにあるようなやつ)でもActionForm作るんですか?
>
> 漏れも知りたい

そうだよ。

ただ、ウィザード形式の入力画面や、入力→表示といったページはひとつのActionFormで
つくれるから、すべてのFormにたいしてひとつづつ作らないといけないというわけではない。
149デフォルトの名無しさん:03/04/04 13:47
>>148
俺はJSPで<html:form> タグがある場合はActionFormは
必須ってことだと認識してる。
もしActionFormを定義してなかったらエラーになると思う。
 逆に、表示だけ(bean:write)のみとかだと
formタグはいらないからActionFormもいらないはず。
<path="/hoge" type="HogeAction">でOK。

>>143
struts-config.xmlでvalidate="true"になってる?
一番怪しいのはconfigファイルだな。
150デフォルトの名無しさん:03/04/04 14:07
DynaActionFormに配列を持たせたい場合はどうやって定義すればいいんですか?
iterateタグで表示して、さらにそこから入力させたいのですが。
151デフォルトの名無しさん:03/04/04 16:43
>>40
設計ガ助長なんですヨp
152デフォルトの名無しさん:03/04/04 16:55
>>40
Rubyっていい?
153143:03/04/04 18:17
>>146,148,149
レスありがとです。
ちなみにvalidate="true"は書いてありましたが、inputが無いのが駄目な
原因でした。(無知って恐いです)

このvalidateって機能は便利ですね、なんとなく。

う〜ん、勉強してみれば結構面白そうだな。。>>struts
>ちなみにvalidate="true"は書いてありましたが、inputが無いのが駄目な
>原因でした。(無知って恐いです)

あれ、validate="true"の場合は必須なんで、ブラウザにエラーがでるはずだけど
validatorを使わずにvalidateメソッドを使う場合にはそうでもないのかしらん?
155143:03/04/04 20:14
>>154
いや、エラー出てたんですけど、何すれStrutsダウンロードして
から40分ぐらいで作った処女作だったのでどんな属性が有るのかも
分からなかったので…。

その後dtdファイルを読んでみたら分かりました。

そういえば
http://www.ingrid.org/jajakarta/struts/struts1.0/ja/target/documentation/userGuide/building_view.html#form_beans
の下の方にあるファイルのアップロードの解説のJSPは閉じタグが全然ついてないのは一瞬戸惑った。
156143:03/04/08 20:37
struts1.0.2を使っているのですがエラー時に表示するプロパティファイルって
web.xmlで指定したもの(デフォルトではApplicationResource.property)しか
使えないんですか?

struts-config_1_0.dtdではないけどstruts-config_1_1.dtdでは
message-resourcesタグが使用できますよね。これに代わる機能は
なにかあるのでしょうか?
157山崎渉:03/04/17 15:43
(^^)
158 :03/04/19 15:52
ストラッツまんせー
159デフォルトの名無しさん:03/04/19 19:45
WASversion5でSTRUTSがビジュアルに開発できる
んですがいいですか
160デフォルトの名無しさん:03/04/19 19:57
eclipse(Tomcatプラグイン&EasyStrutsプラグイン)とStrutsでやってるけど、かなり(・∀・)イイね
161デフォルトの名無しさん:03/04/19 20:23
strutsまんせーなおまいらに質問。

複数ラインがあるフォームの処理って、strutsではどうするの?
(エクセルのようなテーブル形式の入力フォーム)
162 :03/04/19 20:56
MVC理論上のコントロールに相当する画面遷移を外だしにすることに
よって設計、および分業がすっきりするという。

一方、現実問題、JSP系システムは画面単位でサーバーとやり取りを
しなければならず、VB的な小さなサーバとのデータのやり取りを
する場合、単純な画面遷移から離脱した、細かいURLのやり取り
をするやり方を使う買うケースは少なくない。

そんなとき、STRUTSの画面遷移における「縛り」は開発的には
邪魔になってしまう。

また、ロジックと画面遷移を外出しにすることによる、ロジックの
つながりの不透明にし、開発側にとって弊害になることも少なくない。
MVCが必ずしも、生産性や機能性において、WEB開発手法における
絶対地位をまだ確立していないことを示す。

TALIBSに関しても、同様に、JSP上のサーバー処理部とクライアント
処理部の直感的区別を妨げ、読みにくくなり、デバッグも困難にさせて
いる部分も少なくない。
163デフォルトの名無しさん:03/04/19 22:18
JSPがいやな香具師はVelocityなんて(・∀・)イイかもねー。
There is more than one way to do it!ってこった。
>>161
そこらへんについては
Strutsをダウンロードして、struts-exercise-taglib.war
を参考にすると良いよ。簡単にできる。
ここらへんにも書いてあった。
http://seminars.jguru.com/faq/view.jsp?EID=710844
>164,165
1.0.xはこの辺バグだらけだから苦労するんだよな。
1.1早く正式版にならんかな。
167山崎渉:03/04/20 03:35
   ∧_∧
  (  ^^ )< ぬるぽ(^^)
168161:03/04/20 14:55
>>164,165,166
ありがとさん。
バグあんのかよ。。
いろいろ調べなきゃいけないんじゃ、あんま意味ねーな。
この程度の作りは自分で作ってもそう時間がかかるもんじゃないし。

strutsだめぽ。に1票。
169デフォルトの名無しさん:03/04/20 20:52
on the form bean:
public QuoteFormLineItem[] getLineItems() {...}
public QuoteFormLineItem getLineItem(int index) {...}

on a the line item: int getQuantity() and setQuantity(int q)

on the jsp:

<logic:iterate id="lineItem" property="lineItems" name="quoteFormBean">
<tr>
<td>
<html:text name="lineItem" property="quantity" indexed="true"/>
</td>
<td>other stuff...</td>
</tr>
</logic:iterate>
Struts1.0.2ではindexed=trueは使えないが、できることはできる。
ただ、ActionFormのScopeがrequestだとできなかった。
このへんがバグなのかな?
マスタリングJakarta Struts読んだ。
だめだこりゃ。
添付のバイナリは1.1b3と1.1RC1だが、内容は1.0.xで書いたものを
あわてて1.1対応にした感じ。
1.1で追加された機能やタグがほとんど扱われていない。
1711 ◆lqgT6FBSpw :03/04/29 00:34
Struts tileとJetspeedって、使い比べた人いる?
>>171
何を基準に比べるの?ぜんぜん別物だよ。
1731 ◆lqgT6FBSpw :03/04/29 00:44
>>172
同じようなものだと思ってた。
1741 ◆lqgT6FBSpw :03/04/29 00:46
Struts Tilesはレイアウトを組み立てる機能だけなのかな。
>>174
おおむねそんな感じ。Tilesは画面の部分部分を部品化してそれを並べていく感じ。
ちなみにJetspeedのベースになってるTurbineはデフォルトで似たような機能がある。

JetspeedはTurbineをベースとしたポータルフレームワークで、ユーザ管理やパーソナライズなどの
ポータルサイトに必要な基礎機能といくつかのポートレットと呼ばれるコンポーネントを提供している。

このへんは一番新しいWEB+DB PRESSに載ってた気がする。
あの記事でもStruts tileとJetspeedを比べるとは言っていないはず。
176デフォルトの名無しさん:03/04/29 01:08
StrutsとTurbineって、どちらもフレームワークでしょ?
コンセプトが違うの?
何故に、Jakartaで並列さすのかね?
まだ、Turbineは触りしか読んでないんで、識者の説明キボンヌ
Tilesって、xmlファイルでレイアウトを定義する時に
専用のActionServletが必要でしょ?
あれが、困り者。というもの、別なツールでも独自のActionServletを使ってたりするから。
そう言う時はどうすれば良いの?
俺は仕方なくTilesはjspに書いといたけど。
1781 ◆lqgT6FBSpw :03/04/29 02:13
ということは、そのうちStruts Tilesを使ったJetspeedのようなものがでてくるのかな。
もうある?
>>177
たぶん1.0.xの話だよね。
1.1からpluginになったんかな(というか1.0.xにはplugin機能ないけど)
あー本当に早く1.1正式版でないかな。せめて今度の開発が始まるまでに…。
180デフォルトの名無しさん:03/04/29 03:57
1.0.2でTiles使ったけど、かなり効率化できたよ。
tiles定義ファイルはかなりのサイズになったけど、JSPが散らばるよりはぜんぜんマシ。
総務系Webアプリなら、かなりのお役立ちだと思う。

ただ、JetSpeedの方が「設計してる」という気になってくる。
やってて楽しいのはこっち
TilesでputListとかまともに使った人いる?
あれ、逆にメンテナンス性落としているような気がしてならない。

皆さんに質問。これらのタグの実用上の使い道教えてください。
・bean:page
・bean:struts
・bean:resource
・bean:include
ドキュメント見ても使い方はわかるが使い道がわからない。
いったい何のために用意されたタグなのか?
html:optionsCollectionタグはoptionsより使いやすそうですね。
182デフォルトの名無しさん:03/05/08 02:58
Strutsで使われている画面マネージャってなんでつか?
Classでつか?どんなしくみなのでつか?
183デフォルトの名無しさん:03/05/11 15:13
Tiles で putList を使おうと思ってるんだけど、
Cannot find bean putListName in any scope'
って表示されてうまく動きません、、。

tiles-def.xml
では正しく定義していると思います。

どこか気をつけないといけない点とかあれば、
教えてください。
>>176
StrutsはあくまでWeb層までのフレームワーク。
TrubineはEJBの全体を包括しているという感じ?
TorqueのようなDB<->JAVAマッピングフレームワークも用意されてる。
って実は俺も良くわかんない。
easystruts
全然easyじゃない
>>184
EJB?????
>>185
うん、使うのにとってもコツがいるよね。
ざっと読んだ感じだけど、なんかきちんとstrutsを理解してる人が少なそうな感じ。
struts覚えるの面倒→否定しとけ みたいな。
PHPでPEAR使わない人もそういう理論が多かったなぁ(関係ないけど)

俺は似たようなフレームワーク作ってたから、strutsがメジャーになってかなり助かった。
作りが糞とかは正直どうでも良い。資料が多くてそこそこつかえるのであれば
自作よりはstrutsを選択すべき。

アーキテクチャーを作る側からすると、自分的にマンセーじゃなかろうと
標準的な仕様を利用した方が、ユーザーやチームを説得するのに楽だよ。
※特にstrutsはWebとかにたくさん資料があるから、教育コストも下がし

あと、strtusのアプローチだと、チームの明示的な分業化が楽。
MVCのカテゴリを明確だし。
189188:03/05/11 16:55
一応補足するけど、作り手の立場というよりもアーキテクチャーを
決める立場からすると楽ってことね。
実際作るときはこうした方が良さそうってのがたくさんあるし。

Websphereが公式に推してるって事実も大きいかも。
190188:03/05/11 16:59
う、なんか誤字が多くて馬鹿みたいだ。
189の内容も重複してるし…スマヌ
191デフォルトの名無しさん:03/05/11 17:16
DataSource、コネクションプーリングについて質問です?
その辺のことあまりよくわかっていないもんで。

Strutsで通常、DataSourceの取得ってどうやってやってます?
ActionServletの継承クラスを作って(plugin)
ActionServlet#findDataSourceしてDataSourceオブジェクトを
使いまわすのかな?(テーブル単位のSQL発行クラスでstatic変数に格納する)

ちなみにfindDataSourceは1.1では非推奨だから、
JNDIを使用してみようと思うんだけど、同様にplugin内で
lookupしてDataSourceを使いまわすってことでOK?

ちなみに、コネクションプールはJNDIを使用した場合は、
APPサーバーのクラスがやってくれるってことだよね?
findDataSourceした場合は、GenericDataSource.javaかな。
特にプールの設定しなくても勝手にやってくれると。

あと、DataSourceを使用した場合は、connection.close()しても
プールに返すんですよね?コネクションの切断ではないですよね?
プールに入れたり返したりするのは、プログラマが意識する必要は
なくて、コネクションプールしてくれるクラスが自動的にやってくれると。

あと、コネクションプールに関してはdbcpを使うのと
APPサーバーのどっちがいいのかな?
長文スマソ。

>>191
ちょっと 使いまわすアプローチ方法が理解できないんだが…

普通はJNDI形式でDataSourceをキャッシュ管理するSingletonのクラスを
作っておいてそれから毎回取得するやり方でいかない?
※いつもStrutsのDataSourceじゃなくてAPPサーバの利用してるから違ってるかも

コネクションプールについては、struts-config.xmlで設定しておけば
勝手にやってもらえるよ。俺の場合APPサーバが商用なんで念のため
APP側でやるようにしてる。

strutsで利用しているdbcpの信頼性って実際のところどうなのかな。
193191:03/05/11 17:38
>使いまわすアプローチ方法
ActionSerclet継承クラスの
findDataSourceで返ったDataSouceオブジェクトをHogeBeanにset

HogeBean{
setDataSource()
getDataSource()
}

テーブル単位のSQL発行クラスで
private static DataSouce dataSouce = HogeBean.getDataSouce()

特にsingletonで実装してないけど、、、
メモリリークになるかな?なんかおかしいです?

>普通はJNDI形式でDataSourceをキャッシュ管理するSingletonのクラスを
>作っておいてそれから毎回取得するやり方でいかない?
これってlookupは1回だけじゃない?
>>193
こっちの勘違いみたい、そういう実装方法ね。

singletonのアプローチは俺の好みだから、別にそのやり方でもいいんじゃないかな?
HashMapにlookupさせたオブジェクトを格納させるやり方に慣れてたんで。
Struts1.0で採用していたGenericDataSourceの使用は1.1RC1の時点では非推奨。
Jakarta-Commons-DBCPのBasicDataSourceか、Appサーバが提供する機能を使えと。
しかし、昨日あたりからStruts開発者MLではGenericDataSourceへ回帰する
雲行きになってきた。現在投票が行われている真っ最中。
CommonsのDBCPとPoolの次期バージョンがFIXしないので1.1の正式リリースが
延びに延びているのに業を煮やした開発メンバーが多し。
>>195
詳しい情報ありがと〜

俺もMLチェックしておきます。
Struts1.1の構成を見た感じだと、BasicDataSourceでいい気もするんだけどなぁ…
197191:03/05/11 18:12
JNDIを使用する場合でも
ActionServletのinitでlookupしてやればいいという訳ですね。

>>195
1.0.2でもGenericDataSourceのプールは簡易実装ってあったから
結局のところJNDIの利用がベストなのでは。
1.1はよリリースしてほしー。

StrutsのDataSource使うとActionでConnection取得してModel層まで引っ張り回さなきゃ
ならんのが気持ち悪い。
DBの接続管理なんてModel層だけで閉じておきたいところだね。
なので俺はStruts使ってもDB接続はAppサーバのJNDI使う。
Modelというかビジネス層にはConnectionしか渡さない。
トランザクションの制御はその前でやりたいし。
俺も199のアプローチと同じ。
AppサーバからのDataSource取得はビジネス層でしてる。

んでもって、とったDataSourceをDAOへ設定させて利用って感じだす。
202191:03/05/11 19:16
>StrutsのDataSource使うとActionでConnection取得してModel層まで引っ張り回さなきゃ
>ならんのが気持ち悪い
ActionでfindDataSoureしてDataSouceをDAOに引数として渡すことが
気持ち悪いということかな?

>AppサーバからのDataSource取得はビジネス層でしてる。
JNDIのlookupは必ず1回のみだよね?
そのためにDataSouceオブジェクト?をsingletonで実装するということかな?
>>202
> ActionでfindDataSoureしてDataSouceをDAOに引数として渡すことが
> 気持ち悪いということかな?
そう。俺はEIS層へのアクセスはビジネスロジックと考えている。
Controller層でDataSourceは扱いたくない。
VCの部分はJDBC使ってもEJB使ってもWeb Service使っても同じポリシーで
設計したい。

> JNDIのlookupは必ず1回のみだよね?
そりゃそうでしょ。毎回lookupしてたらおおばあへっどが・・・・
将来的にEJBへのアプローチを考えたときに、java.sql や javax.sql 系の
クラス類はActionServletからいじらせたくないなぁと。
※RowSetのアプローチも考えられるけど微妙

>JNDIのlookupは必ず1回のみだよね?
>そのためにDataSouceオブジェクト?をsingletonで実装するということかな?

そゆこと。
正確にはlookupしたオブジェクトをsingletonインスタンス内にキャッシュさせておく。
キャッシュに存在しなければ再度lookupさせてくって感じね。
ServiceLocatorちっくに考えてます。
205191:03/05/11 19:45
IBMのBluePrint AuctionでJNDI使ってるから見てみたけど、
Factoryとかなんとか結構複雑になるんすね。
当方、J2EEパターンとか詳しくないので。。。
http://www-6.ibm.com/jp/software/websphere/developer/download/wasstx.html

ちなみにExtension for StrutsがV1.1になってる。今気づいたよ。
以前めちゃくちゃにたたかれてたけど、どうなんだろ?
J2EEパターンは覚えておいて損はないよ。
GoFのデザインパターンより具体的で理解しやすいし。

俺はSunから出てるやつを読んで勉強しますた。
207191:03/05/11 20:03
>>206
了解!
今、結城 浩の本でGoFのパターン覚えてるとこです。

これのことかな?
http://www.pearsoned.co.jp/washo/java/wa_java15-j.html
ほかにお勧め(易しい感じ)の本があればよろしくです。
>>207
それそれ、具体的なリスク含めて書いてあるからかなり参考になる。
というか、昔自分がはまった事ばかりだったりして…
Strutsとの連携考えながら読み勧めると、アプローチ方法を
見つけやすいかもしれないです。

あとお勧めは、最近出た薄いJ2EEパターンの本。
白とオレンジの表紙だったような。
あれも、分かりやすかったです。
※EJBスレにリンクがあったような…
スレ違いな話題を引っ張るのもアレなんだけど、せっかく見つけたので
↓208で最近出た薄いJ2EEパターンの本ってやつです。

http://www.amazon.co.jp/exec/obidos/ASIN/4822281523/250-7026755-1439463
210191:03/05/11 20:31
>>209
thanx 立ち読みして決めます。
スレ違いスマソ。
211デフォルトの名無しさん:03/05/16 03:45
おい、おまいらに質問です!!
おまいらはMVCのViewテンプレートにTilesをつかってますか?
それともVelocityをつかってますか?
>>211
Tiles勉強も含めてさわっています。
構成変更時は結構便利だけどタグがいまいち痒いところに手が届かないでつ。
Velocityはさわってません。
213デフォルトの名無しさん:03/05/19 02:43
そもそもストラッツが使い物になりません
たとえばデータを100件のうち20件ずつ表示させたり
テーブルの特定の行だけ色をかえるとかできません
できるのかも?
少なくとも容易に出来ないと使えません

>>213
あんたが使えないだけ
Strutsのカスタムタグ使わないよりは使った方がスマートに出来るよ
>>213
> たとえばデータを100件のうち20件ずつ表示させたり

そもそもそのUIはどのツールとか言語でも作りにくいような。
Strutsというかサーブレットでやる場合、検索結果をSessionに保持しておいて、
URLか何かに現在の表示ページを取っておいて、Actionでそれ見て対応かな?

> テーブルの特定の行だけ色をかえるとかできません

これは簡単だろ。
ロジックタグがそのままだと思うけど。
> たとえばデータを100件のうち20件ずつ表示させたり
Strutsでやるんなら検索結果をsessionに入れておいて、
logicのiterateタグのoffsetとlength使う。
検索結果数もbeanのsizeタグ使って取得できる。
217215:03/05/19 11:13
>>216
なるほど、そっちのほうがViewの責務をはたしてますね。
勉強になりました。

でも、このUIって前画面/次画面ボタンUIでしょ。
嫌いなんだよな〜、どの言語でやっても嵌る。
218デフォルトの名無しさん:03/05/19 11:37
>>213
僕も前にStrutsでソレを実装したけれど、
そもそもそれって、Viewの役割では無いのでは?

Modeが20件用意して、Viewは単純にそれを表示すれば良いだけでは。
>>216さんのと同じ意見かな。SessionスコープのFormにデータを
入れて置いてあげるだけ。
EJBがあればstrutsはいらない、というわけでもないか?

DBからデータを取り出すのもアレだし
>>219
Strutsはあくまで、MVCの Cがメインで Vをサポート程度。
だから良いといえば良いのだけど。
どこかにいいサンプルあるところない?

タグリブの動作がいまいち掴めてないので、、。

ドキュメントは見たんだけど実際にソースで使っているとこが見たいでつ( ´・ω・‘)
>>221
JAVAワールド(雑誌)の2002/05
典型的な買い物篭なんだけど、とりあえずの部分はこれで十分かも。

あとは使う度にドキュメント調べて渡来かな・・・、やっぱ。
まあ、ドキュメントを有志の方々が日本語化しているだけ多少はましかも。
マシンとしか思えない直訳でも、辞書調べるよりは早いときあるし。
いざとなれば原文か。

223デフォルトの名無しさん:03/05/19 21:43
テーブルのカラムの色を変えるやり方がやはりわかりません
特定の値によってテーブルの色を変えたい
(たとえば60点以上の人は青とか)
ストラツでは
<td><bean:write・・・</td>となりこれでは色が変えれません
(<td bgcolor=red>のようにしなければならないので)
やっぱタグlibを作らなければだめ?
(タグ¥LIBはややこしそう)
それが出来ないとSTRUTS使う気が・・・・
それとコンポボックスにDBから値を読み込んでセットする方法・
やはりタグLIB?





>>223
JSTLでも使えば?
>>224
JSTL使って解決する問題でもない

>>223
あらかじめActionのexecute(perform)でBeanに色の値を入れておいて
<td bgcolor="<bean:write・・・/>" ><bean:write・・・/></td>
でいいんでないかい?

>コンポボックスにDBから値を読み込んでセットする方法
optionsタグかoptionsCollectionsタグを使う

これぐらいの使い方ぐらい思いつかないでtablib自作は無理ぽ
226デフォルトの名無しさん:03/05/20 16:10
>>225
Beanに色の判断までやらせると
Viewごとにそれぞれ別な色をつけたい場合に困るのでは?
表現に関する判断はViewでやるべきだと思う。
アダルトDVDの膣内射精シリーズを買っちゃった
看護婦、OL、人妻とっても安かった!

http://www.net-de-dvd.com/
EJBは関係ないよ。
EJB層の話はまったくからまない。

Web層のみ
>>219 はStrutsが何なのかもわかっていないだけ
もしかして、IIS5.0で使えないでつか?
Tomcat3.24 & IIS5.0で色々試したんですが、力尽きた...
IISとStrutsは関係ないと思うぞ
232230:03/05/22 21:38
IIS5.0 と Tomcat3.24を連携させると、
普通のservletはport8080を指定しなくても
動くんども、strutsを使ってるアプリは404出てしまうでつよ
IISじゃなくて、アッパチなら方法が本家のinstallに書いてあるんでけども、
どうしたらええでしょう

早く帰りたいニダ....

ここのスレはStrutsが何かというより、
それ以前のヴァカが多い気がする。
>>213
氏ねよ。使えねーのはお前の頭だ。
Strutsを使えねーと語るな。
>>230
web.xmlの問題だろ。
235230:03/05/22 21:58
>>234
うーん、そのstrutsを使ったwebappは、URLにポート番号8080を付けると
問題なく動作する
(テストの為にまだport8080は閉じてない。ちなみに閉じても駄目だった)
アパッチでは、apache-tomcat.confなるファイルを修正することで解決できる
らしいのだが、IISとの連携時に使用するisapi_redirect.dllは、それに相当する
設定が出来るんだろうか....という感じで....テケスタ....
236デフォルトの名無しさん:03/05/23 00:38
233>>
そういうおまえが使いこなしてるとはおもわれず。
>>229
いやわかってる。
いや、J2EEの中にstrutsと競合するものがあったら邪魔になるかなとおもっただけ。
JDBCとEntityBeanでは競合する部分があるのでstrutsにも同じようなものがあったのかと
思ったよ。

けど、Turbineはstrutsとは競合せざるをえないのかな?
238デフォルトの名無しさん:03/05/23 00:43
225>>
>>223
>>あらかじめActionのexecute(perform)でBeanに色の値を入れておいて
>><td bgcolor="<bean:write・・・/>" ><bean:write・・・/></td>
>>でいいんでないかい?
なるほど・・・しかしみなさんはどうしてるんですかね?
他に方法がある?



>コンポボックスにDBから値を読み込んでセットする方法
>>optionsタグかoptionsCollectionsタグを使う
>>これぐらいの使い方ぐらい思いつかないでtablib自作は無理ぽ
そのとおりですね(w
まだ勉強中なんでお手柔らかに(w

239230:03/05/23 13:15
uriworkermap.propertiesの設定忘れてマスタ
一応動くようには成る

でもタグライブラリ使ってると、url中の"?"が";j"に化けるし、
gifとかは読み込まれないし、相変わらず苦戦中...
240デフォルトの名無しさん:03/05/24 08:16
>>238と似たようなというか
その手の疑問なんだが

たとえばjava.lang.String[][]っていう配列の配列を
テーブルで表現するときどうするか考えたのだが
logic:iterateを2重入れ子にしてもダメだった
かわりにJSTLのforEachもつかったがダメだった
しょうがないので
string[0][i]
string[1][i]・・・
ってなかんじ
やっぱ、コレクションとか単なる配列しか無理なのか?
「配列の配列」って俺よく使うから結構困る
241デフォルトの名無しさん:03/05/24 08:41
Strutsで、モジュールを動的に取り外したり追加したり出来ますか?


>>241
その質問で何を聞いているのかわかる奴いると思いまつか?
>>241
Struts1.1から追加された機能「モジュール」のことか?
struts-config.xmlを分割できるっていう。
モジュールの定義をstruts-config.xmlに書いてる時点で無理だと思うが。
>>243
モジュールの定義はwe.xmlに書きまつ
245244:03/05/24 11:05
自爆。web.xmlでした。逝ってきます
246243:03/05/24 11:23
>>244
そのとおりですた。
http://jakarta.apache.org/struts/userGuide/configuration.html#module_config-inform_controller
しったかはイクナイですな…こちらこそイッテキマヌ

逝く前に >>240
logic:iterateの入れ子でできたよ。
<%
String[][] array = new String[][]{ {"foo", "bar"}, {"hoge", "boke"}, {"uma-", "mazu-"} };
pageContext.setAttribute("array", array);
%>
<table>
<logic:iterate id="subArray" name="array" scope="page">
<tr>
<logic:iterate id="item" name="subArray">
<TD><bean:write name="item"/></TD>
</logic:iterate>
</tr>
</logic:iterate>
</table>
その前に配列の配列をよく使うあたりで不吉な臭いがするが…
配列の配列はできるけど、それに値をセットすることはできんね。
>>247
それは不要なので問題ありません。
それを必要という人は設計を間違えているのです。
249デフォルトの名無しさん:03/05/24 22:30
STRUTSを使うときのツールは何をつかう
JB8?メモ帳じゃきついようにおもうが
特にエラー特定のとき
250_:03/05/24 22:32
251244:03/05/24 22:36
>>249
EclipseでAntとTomcatプラグイン
252デフォルトの名無しさん:03/05/24 22:57
今月のJavaDeveloper買った人いる?
Strutsの影の部分は何だったの?

近所の本屋は立ち読みできないように紐で括られてるので。
ちなみにJavaWorldは買った。
>>252
買ってないがJakartaProject徹底攻略によれば
Beanを一つ追加するたびにstruts-config.xmlを書き換えないといけない
といいう面倒くささ。
Beanを追加した分だけstruts-config.xml
が肥大化する欠点があるということらしい。

ツールによって少しは解決するらしい。
Caminoという有料ツールについても載っていた。
ちょっと記事が古いのでこれが現状ではどうなのかは知らない。
254山崎渉:03/05/28 12:46
     ∧_∧
ピュ.ー (  ^^ ) <これからも僕を応援して下さいね(^^)。
  =〔~∪ ̄ ̄〕
  = ◎――◎                      山崎渉
255デフォルトの名無しさん:03/05/30 04:41
>>今月のJavaDeveloper買った人いる?
>>Strutsの影の部分は何だったの?
チラッとみたけどわりかし実務的な内容だったような・・・
買うべきか
256デフォルトの名無しさん:03/06/03 00:20
STRUTS初心者の者です(まだ二日目です)
JDBCからレコードセットを取得して結果を一覧表示指定のですが
アクション側
ServletContext s=getServlet().getServletContext();
SelBunruidaiFormBean p=(SelBunruidaiFormBean)form;
JDBCSQL実行
try {
Class.forName("org.gjt.mm.mysql.Driver");
System.out.println("connect ok");
String url = "jdbc:mysql://localhost:3306/sample?useUnicode=true&characterEncoding=SJIS";
String user = "";
String password = "";
Connection con = DriverManager.getConnection(url, user, password);
Statement st=con.createStatement();
ResultSet rs=st.executeQuery("select * from master");
while(rs.next()){
String bunruidaicd=rs.getString(1);
String bunruidainm=rs.getString(2);
}
s.setAttribute("v",e);
st.close();
con.close();
}catch(Exception e){System.out.println("error");}
一覧へ
return(mapping.findForward("ichiran"));
ループの最中の値をどの用にしてわたすか????です
vector とsetattribute getattributeを使うのはわかるのですが
どのようにしてbeanで認識させてjspで表示させるか?
logic タグを使うのをどのようにすればいいか???
ちなみにbunnruidai bunruicdを一覧表示したいのですが
わかる人教示していただければ幸いです。
いちおうネットでしらべてみしたたが対応するやつはなかってです
>>256
Struts以前の問題です。
基本的なJDBC APIを使ったプログラミング
java.utilパッケージの使い方
大文字小文字の区別といった基本的な文法
勉強し直してください。

ちなみに、Strutsを使わなかったらできるのですか?
おそらくそんなんじゃできないでしょう?
久しぶりにこんなDQNなソース見たな。
Struts初心者というか、Java初心者っぽ…
たぶん、レスしても意味わかんねーだろーから、
まずはJava初心者スレで勉強した方が良いよ。

そもそも bunruidaicd,bunruidainm の2つの変数に
延々と値をを入れて何かいいことあるの?
Attributeに設定してる変数もわけわかんねーし。
259258:03/06/03 00:44
一応ループの最中の値を渡す方法ねw

List list = new ArrayList();

while(rs.next()){
 Bunrui bunrui = new Bunrui();
 bunrui.setBunruidai(rs.getString(1));
 bunrui.setBunruicd(rs.getString(2));
 list.add(bunrui);
}
s.setAttribute("v",list);

これで分からなかったら氏ね
260デフォルトの名無しさん:03/06/03 00:56
ありがとうございます
予想どおりの2chらしい即効罵倒レス感謝します。
ついでにJSp側では
<logic :iterate name="v">
ここからわかりません。なぜならばbeanつかってないからです
ありがたい罵倒レスをお待ちしています
>>260
この辺を見てlogic:iterateタグの使い方を知るか、
http://www.jajakarta.org/struts/struts1.0/ja/target/documentation/struts-logic.html#iterate
もしくはStrutsの配布ファイルの中のstruts-exercise-taglib.warを
デプロイして、実際に使っているところを見ながら学ぶかすれ。
262デフォルトの名無しさん:03/06/03 04:37
わからん。ともかく勉強するしかない
こんなことは勉強するとは言わないよ。
264デフォルトの名無しさん:03/06/03 15:18
さんざん既出だろうけど
そこまでしてStrutsを使う意義があるのだろうかといつも思う
265デフォルトの名無しさん:03/06/03 15:39
>>264
禿同
基本がわかってないやつは手を出すべきではない
とりあえず、こういうやつ→ttp://www.atmarkit.co.jp/fjava/rensai/smartj01/fig1.gif
を自分でつくってからStrutsつかうと理解深まる

しかし、理解してしまうとStruts使うのが面倒になるんだよな
設定個所多いし・・・
266デフォルトの名無しさん:03/06/03 15:40
★クリックで救える○○○○があるらしい??★
http://yahooo.s2.x-beat.com/linkvp/linkvp.html
267264:03/06/03 15:53
>>265
結局さ、ビジネスサイドで実装しようと思ったら
それぞれの条件にあわせて設定や機能追加しなきゃならなくて
それなら最初から比較的シンプルでカイタマイズしやすいJSTL使うし

そんなにカスタマイズするところがなければ最初からJSPそのまま使ったりしたほうが・・

と無限ループに陥ってしまう
268デフォルトの名無しさん:03/06/03 16:09
わかるわかる
なんか、MVCっていうより
Strutsの窮屈な枠の中でプログラミングしてるみたいで気持ち悪い
確かに、複数人数でやるときは開発は楽なんだけどね
たとえば、ValidateやTilesは重宝している
だが、Strutsはそれらに比べて枠の規模がデカイので
四方八方ふさがれた気分
269デフォルトの名無しさん:03/06/03 20:00
どーせJSFまでのつなぎなんだし、そんなに必死になってStrutsする意味ねー。
今週中にRC2出るよ
ウェブプログラミングの美しい実装方法を考え出すと難しいね。

漏れの一つ得た結論としては、そもそも Java はウェブプログラミングに向いてない。
スクリプト言語がいい。
それは小さいものを作るときには、でしょ
273デフォルトの名無しさん:03/06/03 22:34
JSF?
JDO?
そんなの本当にあるんか?
JSF(java Server Faces)
http://java.sun.com/j2ee/javaserverfaces/

JDO(java Data Objects)
http://java.sun.com/products/jdo/

まあ、なごめや。
275デフォルトの名無しさん:03/06/04 02:38
だからはstrutsどいうなるのよ?
すぐにでもなくなるわけでもあるまいし
276デフォルトの名無しさん:03/06/04 11:07
>>275
いいんじゃない?
まぁ、仕事で扱うようになってから勉強はじめても
ぜ〜んぜん問題ないレベルの難易度だし・・・
マッタリいこうや
仕事でJavaでWebやる香具師はやっておいたほうがいいだろうな。
Strutsがいいとか悪いとか好きとか嫌いとか抜きにして
この先しばらくは仕事する上で持っておいたほうがいいスキルだとは思う。
>>272

そう。Java に単調な文字列処理は向いていない。
GUIプログラミングするときや、複雑なモデルを処理するときは実に素晴らしい言語だと思う。

現実的には文字列を処理することが多いのがウェブプログラミングだから、
そういうときは Ruby, Python じゃネーノ? と
>>278
その文字列処理をなくすためにStrutsとか、その他フレームワークとかあるんだと思うけど?

実際、Strutsを使って作って、文字列を処理することろって頻出するの?
そういうのって設計がおかしくない?
おまいら教えてください。

ロードバランサがあってセッションが使えない環境で、ブラウザからの
入力を確認画面を経由したのちDBに格納させようとしてます。

画面遷移は、入力->確認->完了の三枚ですが、入力と確認のところで
同じ FormBean を使いまわしてます。要は、scope が request で
パラメータを 1 つのFormBean で渡し続けるというものです。

で、そのときの checkbox の扱いなんですが、html:multibox を使って
FormBean に用意したString型の配列に入れますよね。そこまでは OK
です。受け取った値を(確認画面のJSPで) hidden で再度 FormBean に
渡そうとして苦戦してます。

FormBean には String[] getStrings() と setStrings(String[] strings)
がある場合に、うまいこと配列を渡す方法がわからんのです。

<html:form action="/hogeAction" scope="request">
<html:submit property="submit" value="送信"/>

<html:hidden property="param1"/>
<html:hidden property="param2"/>
</html:form>

とすると FormBean から値を受け取って、その値を hidden に埋められる
のでシンプルにかけるのですが、このときに配列だったらどうしたら
いいんだろう、と小一時間以上悩んでいます。


281280:03/06/05 18:00
ちなみに logic:iterate と html:form + html:hidden でやろうとして
煮詰まってます。
282デフォルトの名無しさん:03/06/05 21:10
なぜセッションがつかえない?
じゃ買い物かごみたいな機能もロードバランサーなら無理なのか?
素直にJSPでやればサーブレットがわで
param1=v¶m2=vとしてクエリーストリングでJSPでGET(w
283動画直リン:03/06/05 21:13
>>280
HttpServletRequest#getParameterValues()とかわかる?

それにしてもへぼなロードバランサだな。SESSIONIDとかでアプリケーションサーバ固定できないの?
まあまあ、ロードバランサーの機種によってはできないこともあるさ。
>>280
で、Strutsのバージョンは?1.1RC1だったらlogicのiterateと組み合わせで
hiddenタグのindexed属性使いな。
http://jakarta.apache.org/struts/userGuide/struts-html.html#hidden
iterateタグの内側でindexed="true"としておけば
property="param" を name="param[n]"と生成してくれる。
>>284
はたしてヘボかな。
高可用性とスケーラビリティの面からいったら
 HttpSessionなしのステートレスアプリ>アプリサーバ固定のバランシング
だろ。

>>286
ちゅうかそんなの適材適所だろ?

結果として上手く行けばそれが最適。
ただ、大体の場合は隣の芝生は良く見えるし、作ったシステムは一から(=設計から)作り直したくなる。
288280:03/06/06 11:02
おまいらレスありがとうございます。

セッションが使えない理由というか、ロードバランサーを扱ってるのが
他部署というのと自分自身ロードバランサーで何ができるのかいまいち
よくわかってない新人なので、セッションが使えないというより
セッションを使えないと思い込んでいる、あるいは使おうと思えば
使えるらしいけどできれば使いたくないんだと解釈してください。

>>284
> HttpServletRequest#getParameterValues()とかわかる?

極力 Struts が提供してる API とタグライブラリで済ませようと
思っています。FormBean に String 型の配列の getter/setter
を用意してやると html:multibox でそれに値を set したり、
logic:iterate で取り出したりできるんだったら html:hidden で
配列に set することもできるはずだろうと。固執し過ぎ?

>>285
>hiddenタグのindexed属性使いな。
> http://jakarta.apache.org/struts/userGuide/struts-html.html#hidden

ごっつぁんです! で、今それをやろうとして試行錯誤中です。(1.1RC1です)
いまいち使い方がよくわかりませんが踏ん張ってみるタイ。
289285:03/06/06 11:25
> 極力 Struts が提供してる API とタグライブラリで済ませようと
> 思っています。FormBean に String 型の配列の getter/setter
> を用意してやると html:multibox でそれに値を set したり、
> logic:iterate で取り出したりできるんだったら html:hidden で
> 配列に set することもできるはずだろうと。固執し過ぎ?

それでいいと思うよ。がんがれ。
290280:03/06/06 12:07
>>289
> それでいいと思うよ。がんがれ。

がんがります。

で、とりあえず logic:iterate は使わないで html:hidden を使って
FormBean の配列に値を流し込んでみようと思いまして色々やって
みました。

SomeForm の stringArray[] フィールドに setStringArray(String[] strings)
と String[] getStringArray() があるとして、

<html:form action="/someAction" scope="request">
<html:hidden property="stringArray"/>

<html:submit property="submit" value="送信"/>
</html:form>

これだと生成される input タグの value は String[]#toString() に
なってしまいクラスIDとかが出てしまって没。
291280:03/06/06 12:07
<html:form action="/someAction" scope="request">
<html:hidden property="stringArray[0]"/>
<html:hidden property="stringArray[1]"/>

<html:submit property="submit" value="送信"/>
</html:form>

の場合input タグは

<input type="hidden" name="stringArray[0]" value="hoge">
<input type="hidden" name="stringArray[1]" value="foo">

となって一見良さそうだけど、

javax.servlet.ServletException: BeanUtils.populate

なんて例外が出てしまいました。

配列に流し込む場合 HTML には

<input type="hidden" name="stringArray" value="hoge">
<input type="hidden" name="stringArray" value="foo">

というタグが出る必要があるんですよね。試行錯誤中。
292280:03/06/06 13:43
BeanUtils.populate が出る原因は ActionForm で String[] stringArray が
null だったことのようです。

private String[] stringArray = new String[10];

public String[] getStringArray() {
...
}

public void setStringArray(String[] stringArray) {
...
}

とかしてやったら出なくなりました。でもこの場合って配列の数を固定
させなきゃいけないんですよね。うーん。やればやるほどはまる。
293age:03/06/10 07:07
RC2キター!
294293:03/06/10 07:08
名前間違えた・・・逝ってきます
295デフォルトの名無しさん:03/06/24 01:03
Strutsイイ!!!!
いくつか本が出ているみたいだけど、どれが良さげ?
297デフォルトの名無しさん:03/06/25 00:35
>>296
名前忘れたけど2000円のやつがイイ!!
validateとかtilesとかDynabeanとか
対応してるやつ買っとけ
>>297
これですか。
http://www.amazon.co.jp/exec/obidos/ASIN/4798005495/qid=1056471591/sr=1-1/ref=sr_1_2_1/250-1862850-0337052
しばらく見ないうちにStruts本増えたね。オライリーの馬本も和訳が出てるし。
>>298
簡単すとらっつですかね?お勧めは。
あと、おらいりいは今日発売かな?
その2冊でとりあえずはいけると思う。

>>299
だまされたよ。明日じゃん。
301デフォルトの名無しさん:03/06/25 23:06
いままでテキストエディタ+antでしこしこStrutsしてたんですが、周りが
徐々に蝕まれだし、形勢利無く、Eclipseに乗り換えました。

結果としては大満足してるんですが、ただ一つ、
ApplicationResources.propertiesの置き場所にのみ困ってます。

基本的にはWEB-INF/classes/<パッケージフォルダ>/においてるんですが、
そうすると再ビルドのとき、必ず消されてしまうんですよ。

ここはありさんを使って毎回コピーするしかないんですかねー
>>301
srcの下におけばコピーされるよ。
プロパティファイル用のプラグイン使えばnative2asciiもやってくれるし。
関係ないけどさぁ。いまいちEclipseの良さが分からないのよ。
まず第一に全ての動作が遅い。。
エディタで入力していて表示が追い付いてくれない。
俺の環境だけなんすかね?

それと、新規ファイルを作成する時に毎回継承するクラスとかを
聞かれるのが非常に嫌だ。自分で入力した方が早いし直感的。

でも、まわりの勢いに負けそう。
304デフォルトの名無しさん:03/06/26 06:42
>>303
遅いってどのぐらいのPC?

継承ボックスは書き込まずにOK押せばいい
あとで自分で書き込めばいい
305デフォルトの名無しさん:03/06/26 08:38
おまえらのおかげで
Struts本、オライリーとカンタンの二冊注文しちまったじゃないか!
しかも、今日届く!
ワクワクしてきたじゃあないかぁ!!
>>300
すまんかったけど、”?”つけたじゃん。
ごめん。

というわけで、あっしも今日買いにいくっす。
>>302
コピーされますた。アヒャ(AA略
うーーん、Eclipse賢いなぁ。

今から勉強&開発にとりくむとしたら、1.0.2と1.1RCのどちらがよろしいでしょうか?
>>308
1.1じゃないの?
下の安定バージョンで覚える意味は特にないよ。
1.0を実務で使うときになったらやれば十分でしょ?
あー、これ使えねーのかよ、1.0だめだな、って。w
310デフォルトの名無しさん:03/06/26 16:02
strutsの勉強本探してるんですけど
カンタンstrutsって(・∀・)イイ!!ですか?
来週あたりfinalリリースage
>302
それって自分でプラグイン書くってこと?
それとも元々ついてるの?
313デフォルトの名無しさん:03/06/26 18:40
おい、さっき届いたぞ2冊
いまから読むので感想聞かせてくれよな
314デフォルトの名無しさん:03/06/26 19:01
>>313
聞かせてくれって、藻前の所に届いたんだろ。
藻前の感想を書いてくれよ
315デフォルトの名無しさん:03/06/26 19:22
大きさは両方ともB5変で、手にしっかりとなじみます
カンタンの方は中に書いてあるソースコードのフォントが
俺的に好みではないがわかりやすくかかれているので良しとする
Windows環境、Linux環境のそれぞれの説明がある(一応動作確認部分だけ)
使うデータベースは両環境ともPostgresSQLらしい・・・
LinuxではPostgreSQL使ったことあったが
Winでは使ったことなかったので俺的にはうれしい(Cygwin使うみたい)
「他のプロダクトとの連携」の章では
Eclipseのプラグインの使い方が載っている
オライリーのほうは、まあ言わなくてもだいたい内容は想像できるだろう
ちなみに、まだこれから読むので上の感想は
あくまでも第一印象として捕らえて欲しい
「こういう説明はありますか?」
「あの技術についての説明あるの?」
といった質問にはできるだけ答えますが
良し悪しには答えるの勇気いるので勘弁してください
(察してください)
317デフォルトの名無しさん:03/06/26 22:04
>>315
それら2冊は「JAVAは中級ぐらいの本を独学、仕事で使うのでStrutsを短期間で理解したい」
というワシの思いに答えてくれそうですか?
318デフォルトの名無しさん:03/06/26 22:51
>>315
十分だと思う
内部事情まで知らなくてもいいのなら
「カンタン」の方で十分
ソースも追いやすいから、StrutsはMVC風の啓蒙にはいい存在だな
320317:03/06/26 23:02
>>318
助かります。
早速アマゾンで買うでつ。
引き続き読破後の感想などをお願いしまつ。
321デフォルトの名無しさん:03/06/26 23:07
オライリーのほうは
EJBとどう連携するかも書いてある
ロギング、パフォーマンス考察・・・
Validatorの単独使用・・・
まあ、最終的には読んどくべきか
>>321
机の上にドンと飾っておいて、上司・同僚を威圧したければオライリーに限るな。
よくわかるのは「カンタン」だろうが、これを会社で読むとなめられそうだから、家で読むべきだな。

てことは、

「カンタン」にオライリーの皮をかぶせて会社で読む

が最強ということか。
まあ、おら煎りいはリファレンス代わりとかその程度でしょ?
読むと賢くなった気にはなれる。
入門書には不適だけど、たまにピンポイントで必要なことが見つかったり。

簡単Strutsはいいよ、とりあえずその本と、StrutsについてくるWarを見れば十分じゃないの?

324デフォルトの名無しさん:03/06/27 11:10
すいません「war」ってなんて読むんですか?
ワー、ウォー、戦争
「jar」
ジャー、ジェイエイアール、日本アーカイブ機構
「うぉー」、「じゃー」。ついでに「いやー」

「わー」って読むやつ、しね。
326デフォルトの名無しさん:03/06/27 11:20
earは難しい
イィェアー(ル)
327デフォルトの名無しさん:03/06/27 11:34
わー
328デフォルトの名無しさん:03/06/27 11:36
うわああああぁぁぁぁぁぁ
329デフォルトの名無しさん:03/06/27 12:12
おい、洒落にならなくなった
Amazonで二冊注文した俺だが
今日になってまたAmazonから「カンタン」の方だけ
送られてきました
俺、2回クリックするようなことしてないんだけど・・・
っていうか、「カンタン」の方だけ来るって言うのもおかしい
Amazonのショッピングカートデバッグしてもいいですか?
War=だぶりゅえいあある、昔天竜が立ち上げたプロレス団体・・・。

>>329
普通に返品すればいいんじゃないの?
2冊たのんでイネーよって。
>316
お前の言ってるプラグインと俺の思ってたプラグインはどうやら違うようだ。
つうか、普通このスレでプラグインっつったら org.apache.struts.action.PlugIn のことだろうがよ。
俺は301->302->312->316の流れがすんなり理解できたが
既にEclipse使ってるからかな。
件のプラグインも使用済みだし。
333デフォルトの名無しさん:03/06/27 22:38
配列をiterateで回して、htmlTagのValueに入れるにはどうすれば良いですか?
出来れば、Beanを作りたくないのですが。
(スクリプトレットも使いたく無い)
// Action
String[] wkArray = {"hoge", "foo"};
request.setAttribute("StringArray", wkArray);

// JSP
<logic:iterate id="loop" name="StringArray" type="java.lang.String">
<bean:write name="loop">
<%-- <html:hidden name="loop" property=""/> --%>
</logic:iterate>
334デフォルトの名無しさん:03/06/27 22:50
>>333
おれなら、めんどくさいこと考えるのは嫌いなので
最初からJavaクラス作って吐き出させる
335_:03/06/27 22:52
336デフォルトの名無しさん:03/06/28 17:44
上から読んでもストラッツ
下から読んでもストラッツ
337デフォルトの名無しさん:03/06/28 21:13
     ∧∧Λ
ピュ.ー ( ゜∇゜ )つ <上から読んでもストラッツ
  =〔~∪ ̄ ̄〕   下から読んでもストウルツ
  = ◎――◎   全然ちゃうやんけボケ〜(゜∇゜)/ 「ウンマンコ」
帯に短し襷に長し、て感じ
339デフォルトの名無しさん:03/06/30 23:30
Struts 1.1 age
340デフォルトの名無しさん:03/06/30 23:40
速度と支柱の組み合わせってどうなの?
341デフォルトの名無しさん:03/07/02 00:12
Tilesイイ!!!

>>340
支柱はJavaServer顔との組み合わせが多くなりそうな悪寒。
342デフォルトの名無しさん:03/07/03 16:45
リリース直後の1.1で基幹システムを作るのには勇気がいるナァ
チキンなオレは1.02でいいや。
343デフォルトの名無しさん:03/07/03 17:04
>>342
1.0.2だとダイナマンが使えない
>>342
1.1b2の頃から1.1を見ていると、1.1finalは「出たばかり」という感じが全くしない。
むしろ、ブラッシュアップされて、バグフィックスされてようやく安定版として
リリースされた、という感じ。
345デフォルトの名無しさん:03/07/03 22:59
>342
全然メンテナンスされていない放置プレイの1.02の方がよっぽど不安だぞ。
ちょうど今、Strutsを使って開発をやってるんだけど
オライリー本すごくいいね。結構役に立ってる。

今のところ一番まともなStruts日本語本だ。
347デフォルトの名無しさん:03/07/04 05:50
>>346
いや、そうでもない。
「あ、これ知りたかったんだよな」
と思うところに差し掛かかって、
ワクワクしながら読み進めると
説明が簡単に終わっていたり
まあ、半年前より情報は十分あるだろ。
半年前なんて、技術評論社かなんかの本だけだったような。
雑誌で取り上げられても、よくて買い物篭まで。

ほんはオライリーと簡単Strutsで十分。
インターネット上にStrutsで運用してるサイトってあります?
知ってたら教えてケロ。
350ななしちゃん:03/07/04 19:48
ASCIIのStrutsプログラミング講座ってどうよ!?
>>349
2ちゃんねる
>>349
派遣情報サイト「はたらこねっと」
http://www.hatarako.net/
拡張子がモロに.do
353デフォルトの名無しさん:03/07/06 03:11
HTMLのTABLEで表になってるとこの一行一行に
テキストボックスとかチェックボックスがある場合の
ActionFormにsetさせるための記述の仕方教えて下さい。
>>353
プロパティを配列型にすればいい。
355デフォルトの名無しさん:03/07/06 03:16
HTMLのソースはどんな感じで、getterとsetterはどんな感じですか?
これは常識ですか?
どこかに書いてありますか?
>>355
そんぐらい調べたらどうだ?常識と言えば常識。というか
ちょっと考えれば誰でも思いつくことだろ?
HTMLは普通に
<input type="text" name="propertyA">
<input type="text" name="propertyA">
<input type="text" name="propertyA">
<input type="text" name="propertyA">
と複数の同名プロパティがあった場合はパラメータはStringの配列で
受け取れるだろ?(←常識。Struts固有でもなんでもない。Webやってれば誰でも知っている。)
Strutsのカスタムタグを使ったらこうなるだろ?これぐらい想像してくれ。
<html:text property="propertyA">
<html:text property="propertyA">
<html:text property="propertyA">
<html:text property="propertyA">
だからActionFormはプロパティが配列型なんだよ。
private String[] propertyrA;
public String[] getPropertyA() (←getterはプロパティの型を戻すから戻り値がString[]型)
public void setPropertyA(String[] propertyA)  (setterはプロパティと同型の引数を取る)
357デフォルトの名無しさん:03/07/06 03:33
>>356
だせーやり方、やっぱみんなこの程度のやり方してんだな。だせー。
358デフォルトの名無しさん:03/07/06 03:42
もっとエレガントなやり方知ってるけど教えてあげない。
359デフォルトの名無しさん:03/07/06 07:28
>>358
自分の知ってること、覚えたことを
他人に教える余裕の無い人

そんな余裕の無い人の知識なんて大したもんじゃない
360356:03/07/06 09:28
>>357-358
ActionFormにはMap-backedやList使ったり、
JSPではiterate使ってindexed使ったりとかか?
JSTL使えばもちっとシンプルに書けるかもな。
しかし、>>355 のレベルじゃそこまで教えても理解できんだろ。
とりあえず>>356までで充分じゃないのか?>>355には。
っちゅうことであのような回答になった。
361デフォルトの名無しさん:03/07/06 10:30
知性が皆無に近い教えてくんを相手にする方は
大変でしょう。素直に尊敬いたします。
362デフォルトの名無しさん:03/07/06 11:16
それでもだせぇ。
表は行の集まりなんだから、行の他の項目と無関係に列で値を抜くのはだせぇ。
>>362
Beanのネスト構成にするとか?
でもそれだとDynaActionFormにできないんだよね・・・・
HTMLはあくまで平面なので、俺はDynaActionFormとかで普通に受け取って、
Acitonでネスト構成のオブジェクトに変換している。
BeanUtils使うと結構簡単にできるし。
ちなみに複数のチェックボックスは<html:multibox/>を使わないとつらいよ。
↓テキストボックスなどは「ここの可変行数のフォームを扱うには?」を見ればできると思う。
http://homepage2.nifty.com/ymagic/struts/faq.html
365コンスタンツ:03/07/08 15:13
Struts猛勉強中です。

まずはstruts-exampleアプリケーションの解析をやってるんですが、
このアプリ、Sessionに追加するbeanのIDやらなにやら、コンスタント
な値一切合財をConstantsっていうクラスに格納してるんですね。
これはこれで見やすいのですが、コンスタント値を変えるたびに
リコンパイルが発生するのは少々マズーな気がします。
これってメジャーなやり方なんでしょうか。

strutsらしいコンスタント値の持ち方ってどんなんでしょうね?
web.xmlでinit-paramを指定する・・・ではあまりに普通すぎる?

イイ!やりかたがあったら教えてください。

p.s.カンタン本、タイトルとは裏腹に読むトコ多くていいっすねぇ。。
【教訓】普通であることはすばらしい事である。
by ジョセフ・ジョースター
>>365
propertiesファイルに書くのはどう?
struts-config.xmlには<message-resources />を複数書いて
複数のpropertiesを使い分けられるのは知ってる?
368とも:03/07/08 19:39
369デフォルトの名無しさん:03/07/09 17:35
>>365
struts-exampleのソースは見てないんですが、Struts自体のソースコード
での定数の使い方から推測するに、多分Constantsで定義されている定数
って通常変更する必要のないものだけじゃないですか?(Beanのキー値なんて
一度決めたら仕様変更でも無い限り変更しないですよね)

で、頻繁に書き換えるリソースは>>367でも書かれているように
プロパティを使うのが普通だと思います。struts-config.xmlで以下のように
定義したメッセージリソースは、

<message-resources key="message.foo" parameter="resources.foo"/>

プロパティの値はActionクラスのサブクラス中で、

MessageResources resources = getResources(request, "message.foo");
String message = resources.getMessage("key");

という感じで取得できます。

370369:03/07/09 18:14
ちなみにJSPからメッセージリソースを参照する場合はbundle属性に
キーを指定して、

<bean:message bundle="message.foo" key="key"/>
<html:img bundle="message.foo" srcKey="key"/>

という感じで参照できます。
371デフォルトの名無しさん:03/07/09 23:05
>>365

> strutsらしいコンスタント値の持ち方ってどんなんでしょうね?

「値が固定されていること」が重要か、「値の中身」が重要か。
どちらなのかによって実装方法は変わる。

前者ならばソース中に constant として定義する。
後者ならば後に変更できるようにする。

後に変更できるようにするにしても、やり方によって運用が異なる。
 ・アプリのインストールが必要
  (.properties ファイルを起動時に読み込み)
 ・設定管理クラスが持つ再読み込みメソッドのコールが必要
  (リソース管理クラスが .propertiesファイルを読み込む)
 ・即時に更新される
  (データベースに格納している)

それぞれ信頼度とコストも異なるから、仕様や設計ポリシー、運用手順で選ぶべきだよ。
一概には言えない。
>>366-367
>>369-370

なるほど、勉強になります。
変更の可能性を考えて使い分けたいと思います。
373デフォルトの名無しさん:03/07/10 02:13
Struts-ELって使ってる人いる?

あんまり近くで使ってる人いないから、結局Struts1.1+JSTLで
やってしまっているんだが…


それで手元の問題が要領よく解決するなら、無理に新技術使う必要ないでしょ。
>>374
最近それを理解出来ない厨房プログラマが周囲に多発&増殖しております。
『家でJSTL使った見たら、(・∀・)イイ!感じだから』、『みんなTorqueが
便利だと言ってるから』etc,,,という理由で新技術を取り込もうとする輩が
多くて。。しかも、ここでいう『みんな』は大抵は2chを指す。
376デフォルトの名無しさん:03/07/10 03:19
そして愛用書はJavaWorldってか
>>375
まあ、実際便利かもよ。
乗り換えのコストを払う価値があるかどうかの見きわめって
結構難しいかも。
プログラマ視点での技術評価と、コスト・安定性・将来性を交えた総合評価は違うからね。
379デフォルトの名無しさん:03/07/10 12:34
>>374
いや、単にStruts-ELの方が便利そうだったから聞いただけです。
他に使っている人がいたら参考になるし。

>>375
新技術を否定してる人が、その新技術を実際に使った事が
無いことも多いと思いますよ。
周りに2,3年前のJavaの知識で止まっちゃってる人が多いので…
※文句言ってる人がantやjakarta系ライブラリ知らない事もあるし

とりあえず、どんどん納期が短くなっていく最近の開発だと、
新しい技術やコンポーネントで、少しでも逃げ道を探して
いかないと、死にそうになります。

もうじっくり開発できる時代はないんだろうなぁ…
>>377
>>375の台詞例はただの例ですのでそれらが良くないとは
思いません。実際Torqueは便利だと思います。

>>379
>新技術を否定してる人が、その新技術を実際に使った事が
>無いことも多いと思いますよ。
そういう人にはその新技術がどういうメリットとデメリットを
持っているかを示して説得しないと。。。

そういう説得をせずにただ、『***は便利っぽい』といういい加減な
理由で推薦されても困るっていう話。特にデメリットを示さずに推薦
するのは悪徳商法に近いものさえ感じる(まぁ、いい過ぎかもしれんが)
381375:03/07/11 01:48
>>380=>>375でし。

>>376
正解!しかも全文鵜呑み
>>381
JWは提灯だからなあ。
383デフォルトの名無しさん:03/07/12 00:48
ちょっと質問させてください
ActionFormのプロパティに
String vName;
っていう名前付けたのですが
これを動かすとgetterメソッドがないって言われてしまいました
しばらく何でだろう?とはまっていたのですが、
なぜか勘が働き、プロパティの名前をvvNameに変えたら
動きました
既出の話かもしれませんが
getVName()はダメでgetVvName()はOKということは
Strutsが読みにいくgetterは
get+最初の文字を大文字にする+2番目は小文字に変換+残りは変更なし
ということなのでしょうか?
結局、じかんなくて試せなかったのですが
もしかしたら最初の直す前のvName場合
getterをgetVname()にすればよかったのですかね?
いちおう、アクセサはすべてEclipseの自動生成なのですが
そのときはgetVName()となっていました
これは、Strutsの仕様なのでしょうか
もしくは、アクセサ書くときのお決まりなのでしょうか
>>383
アクセサ書くときの決まりだね。詳しくはこちらをどうぞ。
http://java.sun.com/j2se/1.4/ja/docs/ja/api/java/beans/Introspector.html#decapitalize(java.lang.String)
>>384
ありがとうございます
ってことはEclipseはそこまで行き届いてないということですかね?
生成時にリフレクション使ってないのかな?
まあ、あんな名前つける俺も俺だけど・・・
>>385
リンク先を読んだんだろうか?行き届いているというか、
EclipseにしてもStrutsにしてもJava標準の作法に従っただけでしょ。
リフレクションは必ず使っているはず。
ま、このは知らないと結構はまるところらしいよ。
Java Houseにも同様の記事があった気がする。
>>386
いやだからね
使っているのにどうしてEclipseはきちんと直さないの?
ってことです
あるいは命名時に警告ダイアログ出すとか
行き届いてないって言うのはそういう意味です
俺も知らなかったのだが、プロパティ名の2番目の文字は小文字じゃないと
いけないってこと?
>>388
そうなんすよ
っていうかそのルールに従って読みに行くので
「見つかりません」となりました
おれも最初の文字だけと思ってたよ
だから、みんなも知ってるのかな?的な意味で書いたわけです
BeanInfo実装しれ。
391デフォルトの名無しさん:03/07/12 19:49
すいませんStrutsのカスタムタグなんですが
所々で「value」属性を使うと思うんですが
例えば
<logic:greaterThan name="mybean" property="point1" value="0">
コレなら動くんですが
valueを直接mybeanのプロパティから取得したいので
<logic:greaterThan name="mybean" property="point1" value="point2">
(point2はmybeanのプロパティ)
ということをやりたいのですが
「point2」という文字のまま比較対象になっているみたいなのです
なので、
value="<%=mybean.getPoint2()%>"
とやれば一応動くのですが
こういうぐあいに、スクリプトレットが混ざるのが気持ち悪いんですが
(だったら最初からスクリプトレットでいいじゃんって言う意味で気持ち悪い)
こういうものなのでしょうか?
それとも、ほかにやり方あるんでしょうか?
>>391
<bean:write />では?
393デフォルトの名無しさん:03/07/12 20:38
>>392
ありがとうございます

以前にそれやってやっぱダメでした
念のため今やってみましたがダメです

っていうか普通のプログラマなら
JSP内に値をハードコートせずにBeanからもらってくるのが普通ですよね
みんな>>391で書いたようにやってたとしたら気持ち悪いと思わないんですかね?

それとも、私の頭の中に
「Strutsのカスタムタグ使えば、スクリプトレットは使わなくていい」
っていう、思い込みがあるのですが
これは勘違いなんでしょうか?
>>393
やっぱりvalue値などにbeanの値を入れたい場合はJavaのコードが絡んでくるな。
解決策としては以下のものがあげられる。
1. JSTLを使う
2. Struts-elを使う
3. JSP2.0まで待つ

これらであれば式言語が使えるからコードの量はずいぶん減るな。
式言語については以下を参照。
http://www-6.ibm.com/jp/developerworks/java/030411/j_j-jstl0211.html

正直Strutsのタグライブラリは使いづらいので、htmlのフォーム関連以外は
JSTL使ったほうがいいと思うけど。
ありがとうございます
やはり使いづらいですか
勉強してまいります
>>393
勘違いしているようだが、
スクリプトレットは <% %>
<%= %> はRuntime Expression(実行時式)
397デフォルトの名無しさん:03/07/13 05:37
ビューのテンプレートにスクリプトレットを間接的にも全く含まない
方法がほしいなら、Struts-Velocityにすれ!頼むから流行ってクリ〜。

>>397
日本語の技術情報を多く出して、裾野を広げてください。
ターミナル・ベロシティってなんだったっけ?ゲーム?
4001 ◆lqgT6FBSpw :03/07/13 17:06
>>399
映画。
そしてスレちがい。
401デフォルトの名無しさん:03/07/14 01:49
漏れもVelocityはいいと思うが
流行るかどうかといわれると…。
まあ、JSP作成だけじゃないからねVelocityは
403デフォルトの名無しさん:03/07/14 06:04
あ?ぼけか?何が流行るかどうかだ?あ?
お前は日本しか頭にないのか?
日本で流行るかどうかが問題なのか?あ?
流行るかどうかってどこを基準に言ってるんだ?あ?
外国の人(プロジェクト)が書いたソース見てみろ!!
Velocity使ってるのが多く見られるぞ。
404_:03/07/14 06:36
>>403
残念ながら、日本で流行るかどうかは重要なのだよ。
周りで誰も使っていないのに「外国では」と言って
周囲の知らない技術得意げに使われてもねぇ・・・・
Velocityのようなテンプレート言語もそうだし、タグライブラリもそうなんだが、
スクリプトレットを極力使わない理由に
「デザイナーにコードを触らせない」「デザイナーの負担を軽くする」
ってのがあると思うんだけど、テンプレート言語やタグライブラリ使うとローカ
ルマシンでブラウザを使い、直ちにデザイン検証ってのがやりにくくなり、かえ
ってデザイナーフレンドリーでなくなるのでは?

と思うのは漏れだけ?

デバッグや後々のメンテをラクにするため、という点ではわかるんだけど。

<%= %>くらいなら、デザイナに書かせてもいいよね?書かせてるよね?(確認)
407369:03/07/14 15:50
>>406
Velocityだったらローカルマシンでの検証はJSPよりもはるかに
やりやすいと思うけど。
<%= %> をデザイナに書かせると、ローカルでのデザインのプレビューは
まず不可能でしょ。
>>407
それは言えてる。タグライブラリなんかもそうだよね。特にstruts-html
>>406
おまえ、Velocity使ったことないだろ。
410406:03/07/14 20:46
ないよ。
>>397を見て、それほどいいものならと今日から触り始めたところ。
いままさにforumdemo.warをデプロイせんとす。
PHPでSmartyに慣れてる俺としては
Velocityの方がしっくりくる。
412デフォルトの名無しさん:03/07/15 01:40
>>403
日本しか頭に無くは無いが、日本で流行る事は重要。
舌街はやってほすぃ。
413山崎 渉:03/07/15 09:34

 __∧_∧_
 |(  ^^ )| <寝るぽ(^^)
 |\⌒⌒⌒\
 \ |⌒⌒⌒~|         山崎渉
   ~ ̄ ̄ ̄ ̄
414デフォルトの名無しさん:03/07/15 14:37
Velocity仕事で使い始めたが、ホントに普及すんだろかね。
>>414
たとえば君が、ここで

「Velocity仕事で使い始めた。スゲーよこれ!(以下レポート)」
とカキコすることにより、興味をもつ者が増え、
投じた一石が鏡の水面に無限の波紋を描くように、
一個の原子の振動が回りの原子に作用し、やがて物質全体を
振動させ巨大なエネルギーを生み出すように、
地に蒔かれた一粒の麦が芽吹き花開き実をつけては枯れその
実が再び地に落ちを繰り返すうちに豊穣の麦畑が広がるように、
皆が使い始めやがてVelocityが時代を席巻するようになる可能
性もあるわけだ。

先ずは種蒔く人となれ。
仕事で使ってみたところの具体的な感想を求む。
416デフォルトの名無しさん:03/07/15 16:52
自動送信メールの本文テンプレートとして*.vmを用意しておくような
使い方はしているけど、JSPの代替にするには機能面で心配。

VelocityでJSPを置き換えられちゃってる人に聞きたいんだけど、
カスタムタグが使えなくて困ることってほとんど無い?
velocity使えねーな、おい。







なんて逝ってみる。
後日同僚が>>417を見て『velocityって使えないね』なんて
いわない事を強く祈ってます。
同僚、後輩にチャンネラ大杉だっつーの。

あ、俺もか。
Velocityはいいんだけど、本流でないっていうか。。

>>416
自分で書くべし
http://nekop.programmers.jp/velocity-tools/docs/ja/
あ、でももりあがって欲しいですです
>>416
>カスタムタグが使えなくて困ることってほとんど無い?

非常にシンプルな作りなので、
カスタムタグと同様の動きは、工夫次第でできる。

Toolsを自分で拡張することで、事実上何でもありになる。
422397:03/07/17 00:34
お、意外と興味ある奴多いんだなあ。ちょとウレチイ。

Cocoonみたいに、「全部XSLT」ってのもどうなんだろ。XSLTはそれ自身が
わけわからんから、難しいかな。PDFファイルとエクセルファイルが作れる
のは、おいしいかも。

くたばれJSP!というか、くたばれASPの亡霊!という気持ちがありまして。
何でロジック層をJSPで書くんだよ!というプロジェクトにただ今埋没中 つД`)
デバッグがムズイムズイ。
設計者に「あなたデバッガ使ったことないんですか?」と小一時間問い詰めたい。
>>422
>何でロジック層をJSPで書くんだよ!というプロジェクトにただ今埋没中 つД`)
>デバッグがムズイムズイ。
>設計者に「あなたデバッガ使ったことないんですか?」と小一時間問い詰めたい。

というか、基本中の基本、MVC知ってますか?ってね
424デフォルトの名無しさん:03/07/17 14:16
strutsってJakarta TurbineやJakarta JetSpeed、 Cocoonと併用できる?
併用するの難しい?
ひとつのページにこれら全部使うの難しい?
さらに、これにくわえVelocity使うのは難しい?
>>424
何言ってんだお前、全部別もんじゃねーかボケ
おそらく自分で言ってて意味わかてね-だろお前
>>42
TorqueやEJBとくっつくんだから、そんなのできるに決まってるだろ。
難しいかどうかは君の能力しだいだと思う。
427デフォルトの名無しさん:03/07/17 14:54
>>426

てゆーか、たとえば、JSPファイル内にPHPコードを埋めることってできんの?
>>427
それは考えればわかるんではないか
429デフォルトの名無しさん:03/07/17 15:05
>>428
できないとは思うけど>>425を見ていると「できる」といっているような・・・・。

他のファイルやディレクトリに置いてリンクさせるなり委譲させるなりは
できることはわかってるけどさ。
さらに、PHPやJSPの中にSSIを埋め込んだり、と
やっぱり一番気になるのはstrutsで作ったWebpageのメンテナンス、保守、管理、
拡張可能性だのう。
strutsは再利用しやすい?

struts-config.xmlを更新するのが面倒そうな印象がある。
>>431
>やっぱり一番気になるのはstrutsで作ったWebpageのメンテナンス、保守、管理、
>拡張可能性だのう。
>strutsは再利用しやすい?

フレームワークって再利用部分を構成してるから
フレームワークって言うんじゃないの?

>struts-config.xmlを更新するのが面倒そうな印象がある
そんなこたーない

っていうか使ってみてよ一度でイイから
>>432
いや、使ったんだけどさ。
ベーンを追加するたびにstruts-config.xmlに書き加えるってのがどうも。
>>433
ある程度の開発してればわかると思うけど
そういう情報を
XMLにするか、HashMapにするかどんなやり方でやっても
絶対、修正個所は出てくる
おれはStruts出る前に自分でサーブレットの遷移先とリクエスト情報を
HashMapに入れるやり方でやってたが
どっちにしてもweb.xml書き換えないといけない

で、Strutsやこういうやり方の利点は新しくベーン作ったときに
その他のファイルは再コンパイルしなくてイイって言うことなんだよ
新たな要求が出てきた場合にそのclassファイルを客に渡して
struts-config.xmlを書き換えるだけでいいって言うこと

どうせ修正個所が出てくるならワザワザ再コンパイルするようなやり方と
XMLファイルを修正するのとどっちがいい?

逆に聞くけど他にいい方法ある?
>>434
おい、俺・・・必死だな
436デフォルトの名無しさん:03/07/17 20:06
JBossならMBeanにしてホットデプロイってとこだな。
>>436
おいちょっと待て
言ってること正しいが
脈絡分からん
全然わからん
だれ?誰なの?なに?何が目的なの?
ホットデプロイだなんて・・・
いやらしい!まあ、いやらしい!
438デフォルトの名無しさん:03/07/17 20:59
おい、このスレはなにか?
関白宣言じゃないのか?

♪もまいらおれに・・・・

♪Strutsのよさを・・・

♪教えてください・・・

♪たのむから・・・・

♪かなりむずかしい〜

♪話かもしれないけど・・・

♪Strutsのよさを・・・

♪聞かせてください・・・
439デフォルトの名無しさん:03/07/17 21:36
Velocity-Tool1.0リリースあげ
これでStrutsでのVelocity利用も進むか?
♪strutsを仕事に・・・
♪使ったけれど・・・
♪言うに言えない・・・
♪ことだらけ・・・
♪かなり愚痴が多い・・・
♪話になるが・・・
♪もれの本音も・・・
♪聞いとくれ・・・
441デフォルトの名無しさん:03/07/18 01:45
>>434
他にいい方法。

あるディレクトリに突然クラスが現れたら
antでstruts-config.xmlを自動更新できないかな?
442デフォルトの名無しさん:03/07/18 01:46
Caminoを使うという手もあるけれど金がかかる。

Eclipseでリファクタリング機能もXML側に機能されるとありがたい。
そんなstrutsプラグインある?
443デフォルトの名無しさん:03/07/18 04:03
XDocletが上手いことやってくれないかな。
444_:03/07/18 04:08
445デフォルトの名無しさん:03/07/18 06:50
おれはEJB手書きしていたので
Strutsの設定ファイルなんて全然苦じゃね
しかも1枚だし
446デフォルトの名無しさん:03/07/18 07:38
Strutsについて質問なんですが(他に何の質問するんだよ)
複数ページにまたがる項目を1枚のActionフォームで扱ってるんですが(そんな高度なことお前には無理)
1ページ目にチェックボックスがあるんですが(ホントかよ)
それをチェックして2ページ目に行った後「戻る」で戻り、(「戻る」だから「戻る」の他にどこ行くんだよ)
さらに、そのチェックボックスをチェックしないで2ページ目に進み(なんでまたそんなめんどくさいこと)
また、1ページ目に戻るとチェックボックスがチェックされている状態なんです(しらねーよそんなもん)

で、チェックボックスって言うのはチェックされているときはリクエストパラメータにkey=valueとして送られるんですが(まあな)
何もチェックされていない場合はそう言うのが送られずにActionFormの内容も前回のままなのかな?と、思い(思っちゃったよw)
送られてこないときにはActionFormのフラグをfalse(Actionクラスからset(false)呼び出し)に設定するようにしているのですが(汚ねーよ)
こんなやり方でいいのでしょうか?(動くならいいだろ?)
447デフォルトの名無しさん:03/07/18 07:52
で、追加なのですが(なんだよまた来たのかョ)
本にはresetメソッド使えと書いてあるんですが(105Pな)
ココで初期化しても複数ページにわたる場合は(だからお前には無理)
1ページ目に戻ると前回チェックされていたとしてもクリアされるんです(あたりまえじゃん)
なのでrequest内にそのチェックボックスのパラメータが送られてきたことを
調べるためにActionFormではなく前述のようにActionのなかでrequest.getParameter("...")
でnullかどうか調べています(だから動けばいいでしょ)



>>446->>447

回答得たければもっと簡潔な文章かけよ。
くだらんこといれてると読む気にもならん。

>>443
XDocletか。それもAntで使えない?
兄さん>>448はマジですよ
451デフォルトの名無しさん:03/07/18 13:07
>>449
XDocletに@strutsタグがあったね。
XDoclet + ant + strutsで問題なさそう。

http://xdoclet.sourceforge.net/tags/apache-tags.html#Tag%20Usage,%20Class%20Level%20(@struts)

 Struts本(JakartaプロジェクトカンタンStruts【秀和システム】)買った。
ここで大きな声で言おう!

『  こ  ん  な  も  の  い  ら  ぬ  !  』

 まぁ、これからはじめる人は良いかもしれないけど…。
少しだけ調べる力がある人(普通のプログラマにはある)なら
ネットで足りる。
 あえてフォローすると、Strutsタグについてのリファレンスにはなるかな?
こういうのはブラウザで見るよりも本の方がいいからね。
 俺は会社が『Struts本読んでみてよ(=人柱になれ)』と
お金をくれたから買ったんだよ。一日で読み終わるよ、まじで。
453デフォルトの名無しさん:03/07/19 00:20
>>452
同感。
発売前はちょっと期待してたけど、立ち読みして買うのやめた。
1.1ではActionMappingsはDEPRECATEDなのに、そのことに一切触れず、
あたかも現役クラスであるかのような記述がある。
タグや構成ファイルの説明でも、モジュール相対と書くべきところが
コンテキスト相対と書いてあったりする。
>>452-453
ということは、ブランドに惹かれてオライリーのウマ本買った俺は正解ですか?
ウマ本どう?

うちの近くじゃ売ってないから中身が確認できん
456452:03/07/19 03:42
>>454
むしろこっちが聞きたい。馬本はどう?
俺も>>455と一緒で近所に売ってないから未確認なんだよね。
でも、Strutsについての本と言ってもStruts自体シンプルな作りだから
どの本も似たような感じになりそう。
ポイントはタグ周りのリファレンスとしての利用価値と
サンプルアプリの質かな?
どちらにせよ、Struts処女じゃなければ(すべての)本の必要性は感じないかも。
>>
たしかに、カンタンは誤字脱字多いな
しかし、馬(オライリ)が良いかというとそうでもない
なぜか?
はっきり言って、オライリーは
なんか、どの項目も駆け足で説明しているみたいで気持ち悪いよ
で、いつもオライリーではあることだが構成(まとめ方)が悪い

Strutsつかって開発している人には実際必要ないんじゃない?
と、おもうわけよ2冊とも・・・だいたいStrutsだって進化するはずだから
実際の生の情報を吸収したほうがいいし、こんな本買うほどのものでもない
おい。おれ、オライリー1冊と
カンタンStrutsを間違って2冊買った
例の俺だが、
やっぱ、Struts自体それほど難解なものじゃないので
一般人は必要ない
さらに言うなら簡単ストラッツのほうを一冊誰かもらってくれ頼む
>>458
よかったらもらえませんか?
メアド入れてます。
マジレスすると、Struts本は全く不要。
ソースを追うのが一番楽に理解できるからるほんとに。
FrontControllerパターンだからエントリポイントは1ヶ所だし。

書籍のメリットはタグライブラリのリファレンスだけだな。
>>460
はげどう。
Strutsのソースコードはそんなにたいした量じゃないしね。
「あの本使えねぇ」「この本使えねぇ」言ってるのは
自分で調べる能力が無く何かに頼らなければならない人か
英語できない人。
そういえば、最近>>1にStrutsの良さを教えるやつがいないな(藁
463デフォルトの名無しさん:03/07/19 16:24
>>461
あほか。
「自分で調べる能力が無く何かに頼らなければならない人か
英語できない人。」のためにそういう本があるんだろ。
464デフォルトの名無しさん:03/07/19 16:42
大変よく出来ました◎
http://homepage3.nifty.com/coco-nut/
とても見やすく出来ました◎
http://homepage3.nifty.com/coco-nut/fe/ero.html
>>456
>サンプルアプリの質かな?
ウマ本のサンプルアプリはオライリーのサイトからDLできるよ。
ショッピングカートなサンプルアプリ等があった。まだよくみてないから質はわからんけど。
466デフォルトの名無しさん:03/07/19 23:51
>>465
買ってない人は
http://sourceforge.net/projects/struts/
Beer4All Shopping Cart Demo が完全版?なのでこれを試して
感想をよろしければ聞かせて下さい。

おれは向いてないのかな。さっぱり分かりませんでした。
storefrontはなんか永続化のところが抜けてるみたい。
特にOJBというかTORQUEのテーブルの作り方とか
OQLとかORMがさっぱりです。
セッションBEANの方もよく分かりませんでした。
パッケージ名の分類もutilとかserviceとかframeworkとか
ああいう分類が普通なのでしょうか。
読んだ方教えて下さい。
467456:03/07/20 03:12
>>466
今日明日は無理だけど(明日から出張…)、適当に
暇見つけてみてみるつもり。
わざわざURLまで書いてくれてありがとう!
>>463
そうだよ。だから「あの本がどうだ、この本がどうだ」と言っているヤツは
自分で調べる能力がない奴か英語できない奴に限られるんだろ?
>>463
ネットワークの外部接続を許可していない情報センターに常駐している奴とかな。

んで、本はバカのためにあると言う奴らは、自分がどうやって大きくなったか
考えた方がいいと思うけど。
たまたまStrutという技術を自分がやろうとしたときに、自分に多くの
予備知識があったから、入門者向けの簡単な本なんて要らないと言う結果になっただけ。

ネット上で調べられると言うのは、たまたまその技術が公開されていて、
親切な人がいろいろやってWebに載せていてくれるから。
それを受け売りして理解した気になって、偉そうな気分になっている奴の方がバカ。
偉そうな事を言うなら、その理解した事を自分なりにまとめて、本やWebで公開しろよ。

どうせ、コミュニティに貢献しようと言う気も無いんだろうけどな。
♪ソ ソ ソクラテスか プラトンか

 ニ ニ ニーチェか サルトルか

 みーんな悩んで大きくなった
情報に金を払うと言う事を知らない後進国ニッポン
本は、未知の概念を頭の中に導入する際には便利だよね。
それ以降は、リファレンス部分以外は役立たずになるけど。
そう思っていて買う分には何の問題もないっす。
473デフォルトの名無しさん:03/07/21 06:43
>>468
そんな自明なことをわざわざ書くなってことだよ。
判ってないのはいらないといってる奴らだろ。

英語もできない、マニュアルも読まない、
そんな奴でも開発でStrutsを使うプロジェクトに入るかもしれない。
そういう奴を1%でも救うのがああいう本だ。

まあ、実際フレームワークってみっちり理解する一部の人と、
使えるレベルの多数の人で開発するために提供されるもんだろ?

その使えるレベルの底辺を如何に救うかが成功のポイントだと思うけど。
475456:03/07/22 21:31
>>474
なるほど〜、言われてみればそうですな。
納得。
ちょっと疑問に思うことがあるので質問させていただきます

JSPファイルを直接呼ぶのはいけないらしいのですが
一番最初の画面だけは特別なのでしょうか?

Strutsに詳しい方教えてください
477デフォルトの名無しさん:03/07/23 21:59
すいません上げさせてください
>>476
いけなくはないが、MVCをきっちり考えたら
リクエストを受けるのはViewのJSPではなくControllerのほうが望ましいな。
> 一番最初の画面だけは特別なのでしょうか?
一番最初だけはって何故思うのかな?
479デフォルトの名無しさん:03/07/23 22:04
可愛い娘たちが貴方を癒します・・・☆
http://yahooo.s2.x-beat.com/linkvp2/linkvp2.html

>>476
>一番最初の画面だけは特別なのでしょうか?
いや、特別じゃないと思う。
『だめ、絶対』とは言わないけど、>>478
言う通りリクエストは常にControllerが処理するべきだと思うな。
>>478,480
ありがとうございます

「一番最初」と思ったのは、本のサンプルなどでよく取り上げられる例で
loginさせるサンプルがあるのですが
それの入り口は直で.jspファイルなんですよね
で、この.jspファイルの遷移元ってどこから来たのでしょう?ということになるのです
ですから、一番最初は特別なのかなとおもいまして・・・
とくに、こういう場合
(最初にBeanの値を参照しなくてもいいので)例えばtextフィールドの中は空欄でも良い訳ですから
最初は特別なのかなと言う思いに拍車がかかったのかもしれません

で、また変なことなのですが.doっていうのはなんかセキュリティ的にいけないのかなと思い
変更したいのですがコレはStruts的には許されるのでしょうか?
>doっていうのはなんかセキュリティ的にいけないのかな
この根拠がまったくわからん。なんで???
483デフォルトの名無しさん:03/07/24 00:28
>>481
JSP を直接参照するように設計するのも、まちがいはまったくない。
ただ、JSPを直接参照する場合には、Servletサイドで行うようなintelligentな処理をまったく行えなくなる。
これは後々おおきなデメリットになるよ。

必ず ActionServlet を介してから JSP なりの presentation layer に転送するのがベストプラクティス。
/WEB-INF 以下に JSP を配置することもある。
こうすれば、必ず ActionServlet を経由することになるし、JSP を直接リクエストされることもなくなる。



servlet-mapping には、*.do ではなく /do/* を使ったほうがよいとされているな。
たとえばExcelファイルを出力したりする場合に、拡張子で問題が起きることがあるらしい。

「セキュリティ的にいけない」というのは確かに意味がわからん。


>>483
/do/* を使うとモジュール分割できなくなるよ。
ちょっと機能が多くなるとモジュール分割はとてもイイ!のに。
拡張子がdo

Struts使ってやがるなこのサイト (メモメモ・・・

Struts重大なセキュリティーホール発見される

よっしゃあのサイト攻撃だ!

ってことじゃない?w
Strutsのセキュリティーってなによw

でもまあ、個人的には[do]を変えたいって言うのは賛成だな
だってダサいんだもんパチスロのMr.Doを思い出す
>>485
>拡張子がdo
>↓
>Struts使ってやがるなこのサイト (メモメモ・・・
WAFも.doだろ。
なんでそれだけでStrutsに限定されるのか意味不明。

>>481
同梱サンプルやドキュメントに倣って.doを使う例がよく見うけられるが、
Struts的には変更しても無問題
Perlやなんかで組んで、拡張子だけjava風にしてるサイトだってあるだろ。
IBMのどっかのサイトでそう薦めてたぞ。
>>487
ソー希。
>>487
こんな拡張子はいやだ
http://www.2ch.net/2ch.do
お客さんに『拡張子は .do じゃなくちゃ駄目なの?』って聞かれて
『いや、理論上は何でも出来ますよ。』って答えたら『拡張子を
サイト名と同じにしてくれ』っていわれた。

ほんとにいいのか、お客さんよ〜。
http://***/logon.2ch
http://***/adduser.2ch
http://***/userlist.2ch
みたいな……。

………、いいかも。。。(藁
>>490
別にいいんじゃない?
>>491
2chを例にしたからよく見えるですよ、たぶん。。

実際のサイト名は10文字あるですよね。
例えるなら

http://***/logon.applejapan
http://***/adduser.applejapan
http://***/userlist.applejapan

こんな感じ。。。
別に悪いとは思わないけど、ちょっとやだなって…
*.aspに変えてみた
「へー.NETですか?」
「いえJavaです」
「JavaでもASP使えるんですか?」
「Javaは言語も超越します」
「さすがですねJava」
.douyo に変えてみた。
パラメータ付きのURLなんか
xxx.douyo?xxx=yyy
どうよ?
>>494
洒落が効いててグッド
>>494
動かすたびに動揺しているように見える。
>>494
ついでに、アクションのpathの値も /ibmとか /microsoftにすると
/ibm.douyo?xxx=zzz とか /microsoft.douyo?aaa=bbb とかw
/microsoft.douyo?bug=many&user=many
499デフォルトの名無しさん:03/07/27 02:42
■■■■■■■■■■■■■■■■■■■
■■□□□□■■□□□■■□□□□■■
■■□■■□■■■□■■■□■■□■■
■■□■■■■■■□■■■■□■■■■
■■□■□□■■■□■■■■■□■■■
■■□■■□■■■□■■■□■■□■■
■■□□□□■■□□□■■□□□□■■
■■■■■■■■■■■■■■■■■■■
500デフォルトの名無しさん:03/07/27 23:23
>>494
>「JavaでもASP使えるんですか?」
>「Javaは言語も超越します」

このあたりちょっとおかしいような気が。
501デフォルトの名無しさん:03/07/27 23:53
おまいら知ってた?
Actionがスレッドセーフじゃないこと。
インスタンス変数使っていたんだけどさ。

試験で他のクライアントの結果がでてきちゃってさ。ビクーリしたよ。
よくよく調べてみればinitializeでインスタンス作って、使いまわしてるなんて知らなくって。
やっぱframework使うにしても、中身と動き知ってから使うべきだな。

502デフォルトの名無しさん:03/07/27 23:54
ちゃんと reset() メソッドをオーバーライドしているか?
>>502
ActionFormの話は誰もしてないぞ。
>>501
ちゃんとUsersGuideに書いてあるのだが・・・
http://jakarta.apache.org/struts/userGuide/building_controller.html
4.4.1 Action Class Design Guidelines 見れ。
>>504
ほんとだ。書いてあるね。しかも太字でご丁寧に。
全部一読しておくよ。
StrutsでPCからと、ケータイからのアクセスを振り分ける処理でFilterを使いたいのですが
Filterの実装について決まり事はありますか?
普通のサーブレットみたく、web.xmlに指定してやろうと思うんですが
問題はないですよね?
どういう発想をしたらActionのサブクラスにインスタンス変数を定義したくなるのか興味津々
508デフォルトの名無しさん:03/07/28 01:53
>>507
外注の新人と外注のPMに聞いてくれ。
ソース見なかったおれも悪い。
>>506
問題はない。Filter継承してマッピングするだけだ。
でもURLの振り分けに使うだけだったら設計考え直したほうがいい。

510デフォルトの名無しさん:03/07/28 02:09
>>508
まあ実際のところ、スレッドセーフか否かなんて意識したことも無くて
単にインスタンス変数を使っていないから問題に気付いていない、
っていう連中も沢山いるんだろうね。
>>509

ありがとうございます
とりあえず、logの取得場所を同じにしたい要件なんです
すいません
質問なんですが
Actionサーブレットからの遷移先をJSPにするのではなく
XML文書をXSLでHTMLに変換してそれをそのまま出力(PrintWriter#print())としたいのですが
どうするのが一番イイのでしょうか?

いまは、
1.struts-config.xmlの<action-mappings>でforward要素書かない
2・Actionサーブレットの戻り値をnullにする
一応、これやれば動くのですが
このやり方でいいのか心配なのです。
こういう場合にStrutsには他のやり方用意されているのか?というのが知りたいのです。

Strutsマスターの方おしえてくださいお願いします
>>512
わたしんとこで、帳票だすのにiTextでやてって、
ActionのForwordは書かずに、Responceに流して次画面遷移してるよ。

回答になってないかな?
>>512
基本的にはそれでかまわないんだろうけど、
「リクエスト処理やDB処理などを行うアクション」と「XSLT処理とHTML出力を行うアクション」
は別にしといた方が良いと思う。後者がJSPの代わりにViewになるようなイメージ。
515デフォルトの名無しさん:03/07/28 12:46
>>512
「XML文書をXSLでHTMLに変換してそれをそのまま出力」だけを行うServletを用意して
IncludeActionかForwardActionを使うという方法もある。

<action path="/xmlToHtml"
type="org.apache.struts.actions.IncludeAction"
scope="request"
parameter="/path/to/xmlConvertServlet">
516デフォルトの名無しさん:03/07/29 00:37
TwoStepViewパターンを意識しておくことを薦める。

1stStep: 論理的画面として出力
2ndStep: 物理的画面として出力

たとえば XML出力→XSLT変換を加えてHTML出力とか。
表示に必要な内容を保持するオブジェクト出力→JSPで加工したJSP出力とか。
517デフォルトの名無しさん:03/07/29 00:51
XMLで一時ビューを出力するようにしておけば

→GUIに貼り付け
→PDFで出力、印刷
→HTMLで出力
→Word、EXCELなどで出力
等など

といったエンジンを作っておけば、どんなビューでも
簡単に作れるようになるね。Apache-Cocoonはステキだね。
518山崎 渉:03/08/02 02:13
(^^)
strutsでフィルター使いたいのですが
それに相当するクラスっていうのは用意されているんですか?
いまは、普通にフィルター実装してるんですが・・・どうなんでしょう?

フィルターは2.0からみたいなので、それしかないな
ただ、アプリ全体なら手間かかんないけど
一部だけ使うのならweb.xmlの編集しないといけないな
わかってるだろうけど
522デフォルトの名無しさん:03/08/03 20:38
すいません、
入力フォーム使わずにほかの処理だけする
Actionクラスはないのでしょうか?
>>522
ある。っていうか
入力フォーム使うか使わないかは自由だが・・・?
Strutsのモジュール機能を使って管理者用のモジュールを
作ろうと思っています。そして以下のようなアクションマッピングを
記述したのですが、一つ納得がいかない箇所が有ります。

モジュール名:admin

<action
 path = "/top"
 type = "package.name.AdminAction"
 scope = "request"
 input = "/WEB-INF/pages/admin/top.jsp">
  <forward name="success"path="/WEB-INF/pages/admin/top.jsp" />
</action>

このように記述したところ/WEB-INF/***としている箇所がすべて/admin/WEB-INF/***
というように解釈されます。
しかし、それだと一般から直接アクセスされるところにjspを置く事になってしま
います。それはしたくないのですが解決策は有るのでしょうか?
<forward name="success"path="/WEB-INF/pages/admin/top.jsp" />

<forward name="success"path="/WEB-INF/pages/admin/top.jsp" contextRelative="true" />
とする。
input = "/WEB-INF/pages/admin/top.jsp"

ForwardActionを使ったactionマッピングを別途定義する。
<action path="/top"
parameter="/WEB-INF/pages/admin/top.jsp"
type="org.apache.struts.actions.ForwardAction" />
そして、inputからはそのactionを呼ぶ
input = "/top.do"
>>525
なるほど。そうやってやるのですか。
でもそうするとforwardは良いですが、inputの為にForwardAction
を別途用意しなくてはいけないということになりますよね(設定ファイルに
記述するだけとはいえ…)。
とにかくこれで試してみます。
527526:03/08/03 23:40
『ありがとうございます』
の一言を忘れてました。
>>524
pagesディレクトリをadminディレクトリに作成して、そこにjspを配置。
一般クライアントからpagesディレクトリ以下へのアクセスを禁止する

WEB-INFディレクトリ以下にページを置くのって、
単にWEB-INFディレクトリへの一般クライアントのアクセスが禁止されてるからでしょ?
>>524
>>528の意見を勧めるよ。
完全にサーブレット介してのJSPアクセスしたいんであれば
web.xmlで*.jspのアクセスを禁じるとかやれば良いんではないの?

とりあえず、WEB-INF以下にjspファイル置くのはオススメしません。
※weblogicで痛い目に遭います…
>>529
そうなのかぁ。
SturtsコミッタのHusted氏のWebサイトにあるThe Struts Catalogでは
"Place all Java ServerPages below WEB-INF"なんてあるんだけどね。
http://husted.com/struts/catalog.html
まあ、そこにも
"Note: This is not supported by all containers (e.g. WebLogic). "
なんて注意書きはあるんだけど。
WEB-INF以下のリソースをアクセスできないっつーのはWebLogicが悪いんだよな。
Servlet2.3仕様から「Servletコンテナからはアクセス可能」と名言されてるのに。
>>531
まあ、そうなんだけど実際WebLogic使う機会って多いからさ・・・

どうせならどのAPPサーバでも動くようなディレクトリ構成に
しておいた方が良いよ。
533デフォルトの名無しさん:03/08/04 10:48
Velocity Tools 1.0 リリースAge
>533
ずいぶんのんびりした報告だな(w
535デフォルトの名無しさん:03/08/05 01:27
Torque ってどうよ?
>>535
書く場所も違うし
時代も違う
どこから現れたんだ?w
537デフォルトの名無しさん:03/08/05 01:31
>>536
どこに書けばいいんだ?
いいじゃん、元Jakartaファミリーだろ。
539デフォルトの名無しさん:03/08/05 01:33
>>538
君、いい人だね。
>>539
ついでに書き込んでおいてやったぞ
>>540
Torqueについては、そのスレに死ぬほど書いてある。
過去ログ読んでから書けや。
542デフォルトの名無しさん:03/08/05 01:50
>>540
いい人だが有能ではないね。
543デフォルトの名無しさん:03/08/05 16:47
ああ、またTorqueの被害者が一人...
544デフォルトの名無しさん:03/08/05 17:06
>>543
ていうか、そういう書き込み見てて恥ずかしいからやめれ。
自分で使いこなせてないって宣言してるようなもん。
機能をきちんと把握してれば、十分業務レベルで使いこなせてるぞ。

アーキテクチャーがよろしくないとか、そういう話は別ね。(念のため)
545デフォルトの名無しさん:03/08/05 18:56
>>544
すまんのう。
3.0 beta2の頃の駄目駄目なイメージがいまだに残ってるもんで。
546デフォルトの名無しさん:03/08/05 23:29
>>545
いったい何が駄目駄目なんだ?
具体的に挙げてくれ!
547デフォルトの名無しさん:03/08/06 00:07
最近、とりあえずTorque叩いとけ的な雰囲気を感じるね。
単に動作検証に失敗してるだけなんじゃない?
548デフォルトの名無しさん:03/08/06 00:16
>>547
そうなのかあ。
何が駄目なのか具体的に挙げてくれれば、グルたちが助けてくれるだろうにのう。
Torque別に不満ないけどなぁ。
あえて言うとすればパフォーマンスくらいかな?
適当にSQL直で書くよりはいいけど。
550デフォルトの名無しさん:03/08/06 00:30
>>549
パフォーマンスって別にSQL実行するだけでしょ?
ひょっとして JOIN せずに毎回DB見に行ってるとか?
551デフォルトの名無しさん:03/08/06 00:31
>>538
が Torque スレ教えてくれた。
>>550
Oracleだと、ちょっとしたSQLの書き方によって死ぬほどパフォーマンスが
変わったりするので、意図したとおりのSQLを吐けないと困るときがあるのよ。
んで、吐かれるSQLをいちいちチェックしながらTorque(に限らないORM)で書いて
いくと、結局直でSQLを書くのと変わらないというか…
納品物のソースにはSQLは直接出てこないので、見た目綺麗になるけど。

まぁ、Oracle使わないといけない時点で、ORMを使うという選択肢はないんだけどね…
553524:03/08/06 18:33
>>528-529
返事遅れましたがレスありがとうございます。
おっしゃる通りWEB-INF以下にjspを置くのは
直接のアクセスを禁止する為です。

いろいろ考えた結果>>528氏の意見でやってみようと思います。
(ほとんど修正要らないし)

なにより設定ファイルがスッキリするのがうれしいっすね。
>>552
Torqueじゃないけど、うち今使ってるのよ。
ORMとOracleの組み合わせ…

参照の組み合わせはすべてviewで作成したんだけど
保守に入ってそのアプローチで良かったと死ぬほど思った。
データ件数大幅に変わって、実行計画が変わっちゃったときとか青ざめるよね。
>>517
> XMLで一時ビューを出力するようにしておけば
ってのに大変興味あるんですが、いいツールあります?

Velocityあたりでできるんでしょうか?
会社でだれかがjtiddyとかいってたけど微妙に違う気がする。。。。

>>555
まあ、ツールって言うか
サーブレットCocoon使ってみなさい
557デフォルトの名無しさん:03/08/09 12:19
ちょっと質問なんですが、

DynaValidatorFormで、scopeをrequestで使用した場合はform-propertyの内容が
毎回初期化されますが、scopeをsessionで使用した場合は最初の一回初期化され
ずっとform-propertyの内容が保持されます。

で、あるページに来たらform-propertyの内容を初期化したいので、下記のように
初期化しているのですが、form-propertyの数が多いので大変です。ほかによい方
法がありましたら教えてください。

BeanUtils.setProperty( form, "aaa", "" );
BeanUtils.setProperty( form, "bbb", "" );
BeanUtils.setProperty( form, "ccc", "" );
BeanUtils.setProperty( form, "ddd", "" );


>>557
resetメソッド呼べばいいじゃん
>>558
でも、Dynaだぜ?

>>557
正しいやり方はこうだ!

request.getSession().removeAttribute("属性名");

560&rlo;ンアア&lro;naMsturtS:03/08/09 12:31
>>559
そういうことだ
561557:03/08/09 12:39
>>558-559
すばやいレスありがとうございます。

sessionの属性を削除するんですか、それは気が付きませんでした。

ありがとうございました。
>>561

Servletをきちんと理解する前に
Strutsに手を出しただろ?
それじゃ困るんだよ。
基本だよ基本。
563517:03/08/09 14:26
>>555
Apache-Cocoonだって書いたつもりでしたが。
http://cocoon.apache.org/
>>559
resetメソッドあるよ?なんでDynaだと呼んじゃいけないのさ?
http://jakarta.apache.org/struts/api/org/apache/struts/action/DynaActionForm.html

struts-config.xmlにinitial書いているのならresetじゃなくてinitializeメソッド呼べ。
initializaなら「Initialize all bean properties to their initial values」だ。
>>564
まあな、
だが基本は>>559のやりかただ!なぜか?
チェックボックスとかもしあった場合にはresetは効かない
そういう意味でもsession.removeAttribute(attName);
の方がいい
>>565
> チェックボックスとかもしあった場合にはresetは効かない
ハぁ?
567デフォルトの名無しさん:03/08/09 21:10
>>565
中途半端な知識で混乱させるのいいかげんにやめれ
568565:03/08/09 21:17
>>566-567

ん?おまえらDynaActionFormの
resetメソッドを好きなように実装できるの?そんなばかな・・・
それとも、言っている事が上手く伝わってないのか・・・
569デフォルトの名無しさん:03/08/09 21:25
> チェックボックスとかもしあった場合にはresetは効かない
これ解説してくれ
570デフォルトの名無しさん:03/08/09 21:26
>>568
form-propertyを初期化したいのならinitialize使えばいいわけだが
571565:03/08/09 22:19

>>569
>チェックボックスとかもしあった場合にはresetは効かない

チェックボックスの値をクリアするにはresetメソッドの中で
チェックボックスをクリアする処理を自分で書かないといけません
コレはなぜなのかまずわかりますか?
チェックボックスの値はチェックボックスがチェックされているときしか
リクエストパラメータに送られません
なので、最初にtrueを入れてフォームのSUBMITボタン押したとします
そのあと、今度同じフォームでチェックを外したとしても
リクエストパラメータには「checkbox1=false」等というパラメータは送られません
つまり、Formの中ではずーっとチェックボックスに当たるプロパティはtrueになります
なので、resetメソッドの中でチェックボックスをクリアする処理を自分で書かないといけません

これと同じでDynaActionFormのresetメソッドの中でチェックボックスをクリアする処理は自分で書かないといけません
でもコレは不可能です。DynaActionFormはそのまま使うクラスなので無理です。




>>570
>form-propertyを初期化したいのならinitialize使えばいいわけだが

initializeは、どこでどのタイミングで呼びますか?


572デフォルトの名無しさん:03/08/09 22:28
>>571
ご苦労さんwよくできました。
initilizeは好きなタイミングで呼べばいいんじゃないの?
>>557が一生懸命BeanUtils・・・と書いているタイミングで呼べば。
>>571
「チェックボックスとかもしあった場合は」じゃなくてDynaActionFormでは、と言うべきでは?
だってチェックボックスの有無に関係なくDynaActionFormではそのままではプロパティ値の初期化はできないのだから。
それとも、チェックボックスじゃない場合はDynaActionForm使った場合でもプロパティ値の初期化できるとでも?
574565:03/08/09 22:57
>>572

>ご苦労さんwよくできました。
コレはどういう意味が?;;

>>573

初期化は出来ます

resetは出来ません←たぶんこっちが言いたいのだと思いますが・・・

そうですね
>>565のいってる事は合ってると思うよ。
反論してる奴の方が意味分からん。

sessionスコープでのチェックボックスの取り扱いって
色々面倒くさいんだよね…
576575:03/08/10 00:11
あと、DynaActionFormのreset実装だけど、必要なら個別に継承を利用したらいかんの?
Struts1.0.2でActionFormを死ぬほど作ってたから、粒度が細かくなってもあまり違和感がない・・・
※いや、試してないんだけどね。
継承ならDynaの意味ないですので
>>577
え?Dynaの機能を利用しつつresetとか特殊な処理とかを実装する
拡張継承って意味なんだけど。
プロパティとか主要validateを書く必要ない分、楽にならないかな?
リセットするプロパティ名とかどうやって取得するの?
それやるぐらいだったら、最初からActionFormつかっても良いのではないでしょうか?
という意味です。
>>579
プロパティをstruts-config.xmlだけの記述で済ませたいって事だよね。

プロパティ記述がActionFormとstruts-config.xmlに分散しちゃうのは
やっぱだめなのかな。
※LabelValueのListとかをActionForm側に持たせたり。

項目数が多いときにDynaとValidatorの組み合わせが素敵だったもんで…

reset()って呼び出すものじゃなくて、呼ばれるものだろ?

フレームワークがreset()を呼び出したときに、
必要な処理(booleanなフィールドをfalseにするとか)を行うものだと思っていたが。

フォームビーンがセッションスコープの場合は再利用されるから、
reset()のタイミングで初期化が必要なわけでしょ。
>>581
明示的に呼んじゃいけないわけじゃないだろ?
アプリケーションから呼ぶと何か不具合でもあるのか?
フレームワークからしか呼んでは行けない理由でもあるのか?
583581:03/08/10 11:27
>582
おっしゃるとおり、呼び出しても何の問題もありません。

ただ >>557 の状況で、reset()にクリアを実装してしまったら、
ページ毎にreset()が呼び出されて、フィールドがクリアされてしまうから、
元も子もないと思うのだが、間違っているか?
詳しく説明するとだいたいあっていますが、随所に誤解を招く発言が気になりますね。
・reset()って呼び出すものじゃなくて、呼ばれるものだろ?
 →そうとも限りません
・ チェックボックスとかもしあった場合にはresetは効かない
 非常に紛らわしい表現です。普通はチェックボックスがある場合はresetを使え、と言われていますが
 この表現だとチェックボックスがあるとresetメソッドが使えないように読めますよね?

565と581が同一人物かはわかりませんが。
557は572が書いたようにinitializeを呼ぶのが一番手っ取り早いと思います。
呼ばれるタイミングにもよるがremoveAttribute使った場合はパフォーマンスが気になります。
そのたびに毎回DynaBeanオブジェクトを新たにインスタンス化しますので。
565の自作自演と捕らえても宜しいでしょうか?
>584
今まで、resetを呼びたいと思ったことは無いんだが、
どういうときに呼びたくなるのか、教えてくれ。

Actionの中から呼ぶんだよな?

Actionの中に入ったときには、すでにリクエストのパラメータによって
フォームビーンの値はセットされているだろ。
それからreset()呼んで、どう役に立つんだ?
レベル低すぎ
どうでもいいんだけど、DynaActionFormは、私はいつも使っていません。
プロジェクトでも禁止にしています。

Map と同様で、DynaActionForm の場合、キー名の文字列が間違っていてもコンパイルでは
わからないですよね? 動かしてみないとわからないため、私はどんな小さい ActionFormでも、
いつもクラスをわざわざ作成しています。

じゃぁおまえは Map を使わないのか?と言われるとそんなことはないけど....
>>588
それじゃ、BeanUtilsも使えないな。
っちゅうか、Strtus使えないじゃん。そんなこと言ってたら。
コンパイルは通るけどstruts-config.xmlの
<form-bean>や<acrion>に書くクラス名が違っていたら・・・
590デフォルトの名無しさん:03/08/11 13:07
>>589
避けられる範囲のもは避けるということだろ。
日本語の読解が苦手だとチーム開発で苦労するよ。
591_:03/08/11 13:14
592デフォルトの名無しさん:03/08/12 04:18
<html:text property="hoge[0]" value=""/>
<html:text property="hoge[1]" value=""/>
<html:text property="hoge[2]" value=""/>

でクエリーに
yesI.do?hoge[3]=aaa
と直接入れられると問答無用でjavax.servlet.ServletException: BeanUtils.populate
が発生します

validateチェックとか例外ハンドリングもできないしどうすりゃいいの?
>>592
向こうが勝手に配列にしてくれるので

<html:text property="hoge" value=""/>
<html:text property="hoge" value=""/>
<html:text property="hoge" value=""/>

と、書いてください
594592:03/08/12 17:32
>>593

うーん、それだと配列の順番がバラバラになるから困るんだよね
実際には
<html:text property="hoge[0]" value=""/> <html:text property="foo[0]" value=""/>
<html:text property="hoge[1]" value=""/> <html:text property="foo[1]" value=""/>
みたいに対応してるし

わざわざそんなクエリー入れる奴はいないだろうけど500エラーは何か恥ずかしい
>>594
バラバラってどういうこと?
書いてる順番になるはずだが・・・
ソースの表示でHTMLを見てごらんよ
>>594
500エラーが恥ずかしいってだけなら、エラーページ用のJSP用意してweb.xmlでエラーページ指定してやれば?
っていうか、パラメータでエラーになっちゃうような設計がマズイ
面倒だけどパラメタの検証するようにつくれよ
無効な値の場合TOPページ飛ぶようにするとか・・・
598592:03/08/12 22:11
>>595

そのままでは
<html:text property="hoge" value=""/> <html:text property="foo" value=""/>
<html:text property="hoge" value=""/> <html:text property="foo" value=""/>

<input type="text" name="hoge"> <input type="text" name="foo">
<input type="text" name="hoge"> <input type="text" name="foo">

となるだけで
確かにlogicタグのループ内ででindexed="true"にすれば勝手に配列にしてくれるけど
結局[0] .. [1]というようなnameになっていまうわけなんですよ

>>596
まあ、そうするしかないんだが最初からエラーがでるのわかってるのに設計ミスに
気付いてないと思われそうじゃん?そんなことないか
せめてvalidateのところまで到達してくれればerror吐けるのに

>>597
検証したいんだけどどこでできるかと悩んでるわけです
今のところ解決策としてはFilterでActionServletにくる前に検証してリダイレクトさせるくらい
しか思いつかないっす

ちなみにstrutsのexampleで試しても500エラーでます
こういう配列使って構築してるサイトならどこでもそうなると思うけど
>>592
力になりたいのだが、何をやりたいのかよくわからん

まず、ActionFormの中では

String[] hoge=new String[5];//数は適当だが
String[] foo=new String[5];
とかなってるだろ?

JSPの方は
<html:text property="hoge" value=""/> <html:text property="foo" value=""/>
<html:text property="hoge" value=""/> <html:text property="foo" value=""/>
↑のままでイイ

でvalidate()メソッドを実装すればいいんでないの?


ただし、このフォームのページにもう一度戻ってくる必要がある場合
教えてくれ(この場合、俺も散々悩んだからな・・・1スレでは足りない)
600592:03/08/13 00:01
>>599
ありがとうございます

具体的な例として複数の名前:フリガナを入力するフォームがあるとします
htmlではこうなりますよね

名前1:<input type="text" name="name[0]">フリガナ1:<input type="text" name="kana[0]">
名前2:<input type="text" name="name[1]">フリガナ2:<input type="text" name="kana[1]">
名前3:<input type="text" name="name[2]">フリガナ3:<input type="text" name="kana[2]">

idex 0→名前1:フリガナ1
idex 1→名前2:フリガナ2
idex 2→名前3:フリガナ3
と対応してる必要があるわけです

ActionFormは
String[] name= new String[3];
String[] kana = new String[3];
こんな感じ

もちろん普通に入力してsubmitしてくれれば何の問題もないわけですが
input.do?name[3]=aaa
とクエリーを手入力するユーザーがいた場合
validateやexecuteにいく前に500エラーが発生する
本来ならエラー画面にforwardして「入力項目に誤りがあります」等と表示するべきですよね

配列じゃなくname1 kana1 name2 kana2にすればいいかもしれないが
それでは拡張性がなくなるし保守が大変そう
>>600
いま、自分が作った似たような感じのアプリで試したのですが
エラーになりますな・・・
javax.servlet.ServletException: BeanUtils.populate
java.lang.ArrayIndexOutOfBoundsException

配列の場合は考慮されてないか・・・
エラーページ作るしかないのか?

>>595
サーバにリクエストを送る時点でブラウザが
HTML中での出現順にならべて送るようにW3Cの仕様で規定されているが、
Servletのrequest.getParameterValues()では何の規定もないはず。

たぶん出現順にならんでるんだけどね。
>592
想定範囲外のindexはsetしなければよい

public void setFoos(int i, String foo) {
  if (0 <= i && i < 3) {
    // set
  }
}
>>603
それを、どこに書くの?
>>604
Strutsつーか、Java頑張れよ…
>>605
お前だろボケw
配列のプロパティで容量オーバーのインデックスが送られてきたときは
なぜかそのままエラーになる
なので>>603のようなことやったとしてもその前にエラーになる
だから「どこに書くの?」ってこと

>>603
どこに書くんですかそれを?
public void setFoos(int i, String foo)←このメソッド誰が呼ぶんでしょうか?
例え呼んだとしてもコレ呼ぶ前にエラーになってます
>606
605じゃないけど
>public void setFoos(int i, String foo)←このメソッド誰が呼ぶんでしょうか?
commons-beanutilsでpopulateしてくれるんじゃないの?

String[] foos; のセッタとして
void setFoos(String[]) のかわりに void SetFoos(int i, String foo) を書いたら。
>>607
ですから、エラーが
javax.servlet.ServletException: BeanUtils.populate
なんですよ!
だから、
>String[] foos; のセッタとして
>void setFoos(String[]) のかわりに void SetFoos(int i, String foo) を書いたら。
こんなことやっても無理その前に前述のエラーでます
609デフォルトの名無しさん:03/08/13 15:21
FormBeanが生成される前段階で、フォームから送信された値のパースで
コケてるということだろ。
>>603>>605はStruts初心者ということで許してやってくれ。
元の説明が悪すぎるな。
>607
やってみたのか?
592が粘着な上に自己解決できない人間だということで終了なのでは?
613599=601=604=606=608:03/08/13 17:45
>>610

592のことか?
まあそうだが、実際動かせば、言ってる事が理解できる
動かさずに理解不能とか言ってる奴はいかんけどね

>>611

607じゃないけど、おれは全部確認した
614599=601=604=606=608:03/08/13 17:46
>>612
あんたが粘着って思ってるのは
質問者(>>592)ではなくて
多分俺のことだと思うが・・・
615609:03/08/13 18:48
結局、commons-beanutilsのPropertyUtils.javaの1469行目辺り、
setIndexedProperty()メソッド最後の以下の部分で
ArrayIndexOutOfBoundsExceptionを捕捉するようにするしかないのでは?

> } else {
> // Modify the specified value in the array
> Array.set(array, index, value);
> }

616609:03/08/13 18:49
もしくは、org.apache.struts.util.RequestUtilsのpopulate()
メソッド内ですかね。
void setFoos(int k, String foo) を作ったときに、同時に
String getFoos(int k) も作った?

組だよ。
void setFoos(String[] foos);
String[] getFoos();
は、削除しなきゃだめだよ。
599=601=604=606=608が粘着な上に自己解決できない人間だということで終了なのでは?
やれやれ。 Jakartaも浮かばれないね。

>>619>>620

質問にも答えず、横から茶々入れるやつらが言うことではありませんよ。
なぜ質問に答えていないと断定できるのだね?
>ですから、エラーが
>javax.servlet.ServletException: BeanUtils.populate
>なんですよ!

自分の思い通りの答えが返ってこないからってキレるなよ
答える気なくす
>>622>>623


>なぜ質問に答えていないと断定できるのだね?
今まで解答してた人がそんな発言しますか?

>>ですから、エラーが
>>javax.servlet.ServletException: BeanUtils.populate
>>なんですよ!
>自分の思い通りの答えが返ってこないからってキレるなよ
>答える気なくす

本当にそうでしょうか?自分が勘で答えているから答えられないだけではないですか?
それに、このことは既に>>601で述べられています
散々「前スレ読め」と言われているのに
見ないで適当な答えを返せばキレてもしょうがないのでは?(実際にキレてるのかは知らんが)
つまり、前を読んでいない&試していないのに茶々入れてるのがバレバレってことですね
ったく、答えてもらってるのに粘着するなよ。
ソースあるだろ。ソース嫁。>粘着
627621、624:03/08/14 00:10
>>625

私は質問者じゃないですよ?
>>627
要するにお前が、こういうときだけ出てきて茶化す奴ということだな。
629621、624:03/08/14 00:42
>>628
そんなことはないです
621,624が粘着といわれる理由がわかったよ…
631621、624:03/08/14 01:02
>>630
どのあたりでしょうか?
盛り上がってる所すいませんが、一つ教えて下さい。
『Struts1.1rc2を使用』
DynaValidatorFormを使用している箇所で同時にファイルアップロード
を行いたいのですが、struts-config.xmlにはどのような記述を
すれば良いのでしょうか?

現在以下のような記述になっています。
<form-beans>
  <form-property name = "comment" type="java.lang.String" />
  <form-property name = "image"type = "org.apache.struts.upload.FormFile" />
</form-bean>

しかしFormFile自体はインターフェースだからだと思うのですが、以下のようなエラーが
発生します。

org.apache.commons.beanutils.ConversionException:
Cannot assign value of type 'org.apache.struts.upload.CommonsMultipartRequestHandler$CommonsFormFile'
to property 'title_image' of type 'java.lang.String

もしかして! と思ってstruts-configの中でFormFile を DiskFile に変更して試してみましたが、
同じエラーが発生しました。
何か解決方法があるのか?
ActionFormを作るしか無いのか?
教えて下さるとうれしいっす!
633632:03/08/14 01:16
ごめんなさい。
エラー文字列内の[title_image]を[image]と読み替えて下さい。
634632:03/08/14 01:42
あ’’ーーーーーーーーーーーー

申し訳有りません。
自己解決しました。
DynaValidatorFormではなく
DynaValidatorActionFormを使用したところ
解決したようです。

ちなみにまだDynaValidatorFormとDynaValidatorActionFormの
違いも分かっていません。ドキュメント読んでみます。

スレ汚し激謝
635621、624:03/08/14 01:45
>>632
あのですね
ファイルノアップロードする時は
ActionFormを使用してください
相手がすでに理解したことを、結果だけ繰り返し言っても仕方ないだろ。
関根潤三かよ。
637621、624:03/08/14 04:13
>>636
正直スマンかった
かぶっただけなんだよ
>>634
「解決した」と思っているところでスマソだが
それでは解決じゃないんだよ。
http://jakarta.apache.org/struts/userGuide/building_controller.html#dyna_action_form_classes
DynaActionFormとそのサブクラスではプロパティの型として
org.apache.struts.upload.FormFile型はサポートしていないのだよ。
>>635の言うように通常のActionFormを使いなさい。
DynaValidatorFormとDynaValidatorActionFormの違いはValidatorが
「どのActionFormか?」を識別するのにform-beanのnameの値で識別するか
actionのpathの値で識別するかの違い。
つまり、ValidatorActionFormやDynaValidatorActionFormは
同じActionFormでもaction毎に細かくプロパティのチェック条件を
分けられる。ただし、これらは今のところJavaScriptの併用は不可。

それから、なんでRC2?1.1final出てるよー
639609:03/08/14 12:40
>>624
おい!
俺も一旦お前を擁護してみたが、ちゃんと検証し直したら>>617
通り、action.do?foo[10000]=fooでアクセスしても例外など起きなくなったぞ。
今からでも遅くないから謝っとけ。な。

FromBeanにプロパティ String[] name がある場合、
public String getName(int i) {
return name[i];
}
public void setName(int i, String name) {
if (0 <= i && i < this.name.length) {
this.name[i] = name;
}
}
の二つのメソッドが定義されていれば、範囲外の添字が
パラメータとして指定されても問題ない。
640621、624:03/08/14 12:43
>>632
あのですね
ファイルノアップロードする時は
ActionFormを使用してください
解決方法はいろいろあるかも知れないんだから、自分が知らない方法を提示している
人がいるからって、罵倒するのはどうかと思うんだが。
とりあえず試してみろと言いたい。
せっかく教えてもらっているのに、自分でそれを解決できなかったからって、
できないって!なんて言われたら正直答える気なくす。
642621、624:03/08/14 13:05
>>609

え?いつ擁護しました?
ホントに勘違いしているようですが
私は、>>608さんじゃないですよ

そんなコトより、あなたの発言
>>603>>605はStruts初心者ということで許してやってくれ
↑についてあやまっておいた方がいいと思われますが・・・
643621、624:03/08/14 13:13
>>632
あのですね
ファイルノアップロードする時は
ActionFormを使用してください

>>641 名前:デフォルトの名無しさん 投稿日:03/08/14 13:03

言ってることはよくわかるし、正しいけど
お前自体普段からそう思って答えたりしてんのか?
お前自体がゴチャゴチャ言われたからってマジになんなよ
それに、相手が切れたってカンケー無いじゃんほっとけばいい
どうせ、夏なんだし・・
まあたぶん>>605>>606当たりでおかしくなってきたのだが・・・
んーとですね、解らないことがあったらとりあえず掲示板で聞こうなんて思っているうちは
多分上達しないんで、自分でいろいろやって理解するほうがいいです。
いろいろなMLなんか見てても、質問する人は毎回質問か、単発の質問で消えるか
ばっかりで、その人が答える側に回ったのなんて、殆ど見たことないしなぁ。

とりあえず、思いつく限りのすべてのパターンを使ってみればいいんじゃないか?

あと、このスレはいつからStruts質問スレになったんだ?
>>641おまいのやる気はその程度プ
>>644
質問して教えてもらうということは、どういうことか理解しての発言ですか?
相手に切れられてまで教えようと思う人はマゾ以外皆無だと思いますが。
こうやって回答者がどんどん減って行くんだなぁ…
残るのは真性厨房のみ。
>>674
なんだよ、自分の時だけ静粛に語りやがって
650592:03/08/14 13:30
>>603
の通りやればできました

どうもcommonsのBeanUtilsの仕組みをよくわかってなかったみたいで
添字つきのアクセッサは書いてたのですがヨソでも使われてるとは考えてませんでした

皆様どうもお騒がせしました
>静粛に語り

静粛?

口パク?
それとも、目で物を言うということ?
>>647

この件に関した話じゃないけど
回答者の言葉じりつかんで、
つっこみいれるのはいいけど、もう少し穏やかに印象良く指摘できないものかなとも思う
逆に、指摘された方は素直に「すまんかった」っていえればいいいのだが・・・
>>608 を見て、誰が追加で回答しようと思う?
せっかく答えても、正しく当てないで、こんなことやっても無理とか言い出すし。
これって、言葉尻捕らえてることになるのか?
654652:03/08/14 14:22
>>653
俺に言ってる?
>この件に関した話じゃないけど
って書いてます。
お前ら、ここをどこだと思ってる?
煽りがいやなら、MLで質問しろ。
回答するほうも同じだ。
てか、伸びすぎ

普段は無視する質問でも
誰か一人が答えを言うと
おせっかいなことに余計な肉付けして
さらに話が膨らみ
質問とはカンケーないところで
バトル
>>653
だから、前に書いてあること読まないで書き込むから
切れたんじゃないの?

尚且つ、
>>607だけでは説明不十分
その時点では、「出来ない」っていわれても仕方が無い
最終的な完全なやり方は
>>617で発表されたわけであって・・・・

擁護するつもりは無いけどね
659632:03/08/14 15:27
>>638
わぁ、そうなんですか。
ありがとうございます、為になりました。
しかし、今のところDynaValidatorActionFormでファイルの
アップロードが出来ているのですが、サポートされていないの
でしょうか? ちょっといろいろ検証してみます。

DynaValidatorForm と DynaValidatorActionFormの違いは
教えていただいてやって分かりました。
分かりやすい解説ベリーサンクスです。
>>658
ここ質問スレじゃないし。
軽く答えてもらえただけでもありがたいのに。
>>660
おまえも上乗せ突っ込みに参加したいの?w

>>658
完全なやり方を一発で知りたかったら、金出してしかるべき会社に聞けばいいのに。
掲示板やMLで聞いたって、最低限のヒント小出しにされるの当たり前。
>完全なやり方を一発で知りたかったら、金出してしかるべき会社に聞けばいいのに。
ばかですか?
なんか凄い話にもっていってますねププ
だったら、最初から答えなきゃいいじゃん・・・
それでもなぜ答えるのか、それは
小出しにして、意地悪してるんでしょ?
すげーレベル低いやついるな。
そりゃまともに答えてもらえないわ。
>>664
もう関わるなよ、おまえも思われてるぞ
おれ?俺は思われてもいい。どうせ高校だし
666665:03/08/14 18:33
>>664
っていうか、>>662さんかな?反論できないと
他人の振りして「すげーレベル低いやついるな。」ですか?
って言うか、知りたいことの正しい解答を得ようとするなら、金を払うのは常識じゃないか?
掲示板やMLを無料相談だと思って使われると困るんだけど。
高校生だって、金払って学校通って勉強教わってるんだろ…
自分で払ってないから解らんかも知らんが
>>667
>>668
話し飛びすぎ
親のありがたみがわからないで社会に出ると、
無責任な質問とかしちゃう大人になるんだろうなぁ。
会社の署名入りでよくもこんな質問できるなという
ものをMLでよく見るが。
匿名掲示板で質問するだけ、こいつらはまだ頭が回ってるということか(w
>>670
なんか、質問者=高校生ってなってるお前の妄想が怖い
国語とか弱いですか?
2ちゃんねるなんかで聞かなきゃ完全な答えが返ってくるか既にあるというのはナシかどうか試してみるレス
もうやめよーって、人間同士の罵倒は無意味にスレを消費するだけ
>>671
665で俺高校って書いてあるからでは?
>>671
つーかそれ以前に、670のどこがリアル高校生を前提に書いてあるんだよ…
学生時代にそういうことだったから、大人になっても
ろくな質問できないんだなぁって書いてるんじゃないのか?
妄想も(以下略

>>675
>学生時代にそういうことだったから、大人になっても
>ろくな質問できないんだなぁって書いてるんじゃないのか?

同じだよ、『質問者=学生』なんて言ってないじゃん

665は横からいきなり出てきた高校生。
その高校生を、質問者だと勘違いしている
たかが2chでの回答にお金払えって言ってるやつは
苦しい言い草だな。
つーか、お前が高校生だろ?
じゃないと、その高校生が質問者か質問したことない人かどうかわからんよ。
もう粘着はいいって。
>>677
金払えって言うんじゃなくて、思い通りの回答が得られなくて
キレるのは筋違いだよ、金払ってるわけでもないのにってことだろ?
680676:03/08/15 01:56

>>678俺に言ってんの?
俺の書き込みよく見れよ
>『質問者=学生』なんて言ってないじゃん
↑これだけだぞ?

わかりやすく言う。
つまり、
元の質問者>>592は『質問者=学生』とは言っていない。
なので、「質問者=学生」かどうかはわからない。
なのに670は、そういう雰囲気で言っている。

681デフォルトの名無しさん:03/08/15 02:01
みんな必死だなあ。。
解りやすく自分の妄想を、雰囲気とか抽象的な言葉で説明しなくていいからさ。


これ以降粘着したやつは全員粘着な

=========================================================================
                   粘 着 こ こ ま で 
=========================================================================
>>679
てか、キレルってどこの誰が切れたの?
みんな切れてるような気が・・・w

684デフォルトの名無しさん:03/08/15 02:04
struts1.0で動いているアプリを、struts1.1へ移行したいのだが、
どんなところに気をつけろ!とかっていう情報ありますか?
サンプルベースでは、data-sourceの定義の仕方が若干変わりそうなんですがねえ。
ちゅうか、誰が誰に対して煽ってんのかわからんな
どっちにしても外野はおとなしくしていることだな
>>684
そのまま使ってもらってOKです〜

(って書いとくと、誰かが訂正してくれます)
687デフォルトの名無しさん:03/08/15 02:10
同一JSPに複数のフォームを<html:form>タグで定義すると、
それぞれ別のpathを指定しているのに、
出来上がるHTMLの form がすべて同じname になってしまうといった現象がおきて
困っています。
何が原因でしょうか?
688デフォルトの名無しさん:03/08/15 02:12
GenericDatasource にあった pingCommand ってDBCPで使えるん?
>>687
原因も何もそういう使用じゃないの?
で、配列ってことだよな
がんばれ!
>>688

答えにはならないかもしれませんが聞いてください
DBCPを優先させるためにGenericDataSourceクラスは非推奨です
691デフォルトの名無しさん:03/08/15 02:20
>>689
struts-config.xml の action の name に別々の form-bean を指定しているのに、
HTMLには最初の form-bean の名前で複数フォームが出来上がる。
なぜだ??
692デフォルトの名無しさん:03/08/15 02:22
>>690
DBCPにはpingCommand 相当のプロパティってあるん?
>>691
ちょっと待って、やってみるから
>>692
GenericDataSourceにpingCommandってあるの?
pingQueryじゃなくて?
695693:03/08/15 02:36
>>691
俺できたよ。
ちなみに、
org.apache.struts.action.DynaActionFormをつかった。

Action Mappingも2個書いてる?
696デフォルトの名無しさん:03/08/15 02:42
>>695
私がやったのは Dyna でなくただのActionFormです。
Win+JDK1.3.x+Tomcat3.2.x ではうまくいったんだけど、
Linux+JDK1.4.1+Tomcat4.1.x ではさきほどの現象がでました。
どの構成がうまく行くのかいかないのか、もっと調べてみます。
697デフォルトの名無しさん:03/08/15 02:43
>>694
どっちもあるんよ。
org.apache.struts.util.GenericDataSourceですよね?
すいません。apidocにpingCommandを見つけることができません。
力になれないようです。pingQueryならあるのですが・・・
699デフォルトの名無しさん:03/08/15 02:54
>>699
あ〜もしかしてfinalですか?俺はrc1の方見てましたわ
701デフォルトの名無しさん:03/08/15 10:18
>>700
ん?struts1.0の時代からpingCommandはあるよ。
>>701
え〜なんでだろう?
俺のrc1apidoc
org.apache.struts.util.GenericDataSourceクラスのフィールド↓

protected boolean autoCommit
protected org.apache.commons.dbcp.BasicDataSource dataSource
protected java.lang.String driverClass
protected static org.apache.commons.logging.Log log
protected int maxCount
protected int maxIdle
protected long maxWait
protected int minCount
protected java.lang.String password
protected java.lang.String pingQuery
protected boolean readOnly
protected java.lang.String url
protected java.lang.String user

以上です
他にも↓が載ってない・・
activeCount, closed, connections, debug, description, driver, loginTimeout,logWrite, pingCommand, properties,useCount,
703山崎 渉:03/08/15 15:15
    (⌒V⌒)
   │ ^ ^ │<これからも僕を応援して下さいね(^^)。
  ⊂|    |つ
   (_)(_)                      山崎パン
704デフォルトの名無しさん:03/08/15 19:13
agedesuyo
>>702
俺も載ってないのがあってむかついたから
ソースからjavadocを生成したよ。
706デフォルトの名無しさん:03/08/15 23:44
328 名前:デフォルトの名無しさん 投稿日:03/06/01 23:59
おまえらEJBやるよりJavaの真髄を押えておいた方がいいよ?

329 名前:デフォルトの名無しさん 投稿日:03/06/02 00:14
>>328
Javaの真髄?なんのこと?
理由もなく意味のない書込みは止めてください。
「いいよ?」の意味もわからないし。

330 名前:デフォルトの名無しさん 投稿日:03/06/02 00:17
>>329は「EJBやったことある」と言いたいだけ。Javaなんてこれっぽっちも解っちゃいない。

332 名前:デフォルトの名無しさん 投稿日:03/06/02 00:42
>>330
>>329の書込みから、どうやったら「EJBやったことある」と読めるの?
深読みしすぎなんじゃないの?

333 名前:デフォルトの名無しさん 投稿日:03/06/02 00:57
>>332
読めるんじゃない。事実は隠せないだろ?プ
EJBやったことあるってことは自分自身が一番知ってるはずなんじゃない?w

334 名前:デフォルトの名無しさん 投稿日:03/06/02 01:46
>>333
話にならんなぁ。プ、とかwとか言ってるところが寒いし。
まあ、くだらないしめんどくさいからもういいや。
大雨だから焚き付けも湿気ってるな。
708デフォルトの名無しさん:03/08/16 22:18
すいません、既存のWebアプリケーションをStrutsに移植中なのですが
フォームを使う必要がなく、なおかつ何らかのモデルBeanを呼び出して処理(execute()叩く)
するだけの場合、どのActionサーブレットを選択すればいいのでしょうか?
709デフォルトの名無しさん:03/08/16 22:22
>>708
ただのAction
710デフォルトの名無しさん:03/08/16 22:29
>>709

そうなんですか?

public class HogeAction extends Action{

public AcctionForword execute(ActionMapping mapping,
ActionForm form,←使わないのになんか気持ち悪いんです
HttpServletRequest request
HttpServletResponse response)throws Exception{
・・・・

}
}
711デフォルトの名無しさん:03/08/17 01:02
>>710
そういうインタフェースだと思って使うべし。
ActionForm の有無によってインタフェースを分けるか分けないかは
議論の分かれるところだと思うが、
あっても使わなければ実害は少ないという判断で、
今のような仕様になっているのだろう。
712デフォルトの名無しさん:03/08/17 17:58
なんでlogic:equal等で二つのBeanのプロパティを比較できないのか不思議なんですが。。
作った人が馬鹿なんですか?

最新版ではついてるんでしょうか?
713デフォルトの名無しさん:03/08/17 18:01
>>710
下のFormlessActionのようなクラスを作って、フォームを使わない
アクションはこのクラスを継承すればいい。嬉しいかどうかは疑問だが。

public class FormlessAction extends Action {
public ActionForward execute(ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response) throws Exception {
return execute(mapping, request, response);
}

public ActionForward execute(ActionMapping mapping,
HttpServletRequest request,
HttpServletResponse response) throws Exception {
// override this
}
}

public SimpleAction extends FormlessAction {
public ActionForward execute(ActionMapping mapping,
HttpServletRequest request,
HttpServletResponse response) throws Exception {
// もうこれで気持ち悪くないぞ
}
}
714デフォルトの名無しさん:03/08/17 18:02
>>712
何がしたいのかようわからんけど、それで困る人が居ないからじゃない?
むしろ、logicタグを使わないような設計にするのが正しいMVC厨。
715デフォルトの名無しさん:03/08/17 18:22
>>714
そういう真性MVCマニアの人は、たとえば検索結果をリスト表示する、などのときはどう書くのですか?

pubic List getResults(){ return this.results; }

<ol><logic:iterate ... property="results">
<li><bean:write ... property="title /></li>
</logic:iterate></ol>

の代わりに

public String getResults(){
  Iterator it = this.results.iteraotr();
  StringBuffer buf = new StringBuffer();

  whiie( it.hasNext() ){
   ResultBean result = (ResultBean)it.next();
   buf.append( "<li>" + result.getTitle() + "</li>" );
  }

  return result.toString();
}

<ol><bean:write ... proprety="results" /></ol>

みたいなやり方しか想像つかないんですが。。
すべてのHTMLタグをJSP側に書きつつlogicタグを使わないなんて可能なんですか?
716デフォルトの名無しさん:03/08/17 21:26
>>715

> すべてのHTMLタグをJSP側に書きつつlogicタグを使わないなんて可能なんですか?

論理的には可能。
開発者のスキルによっては不可能ってこと。
717無料動画直リン:03/08/17 21:29
718デフォルトの名無しさん:03/08/17 21:30
taglib 自作すればよろし。
>>714
>むしろ、logicタグを使わないような設計にするのが正しいMVC厨。

まさに厨。そんなこと言っている香具師はMVCを誤解している。
下手したらControlerが表示ロジックも抱え込む設計になってしまい
かねない。重要なのはMとVとCを適切に分離すること。

まぁ必ずしもView=JSPというわけじゃないから、JSP自体はロジックを
記述しない静的なものにしておいて、別にViewオブジェクトを用意して
表示ロジックを記述するというやり方もありだとは思うが。
俺はMVCっていうか、JSPにゴチャゴチャと条件分岐とか書くのがイヤだから
表示する内容は全てActionで用意して、JSPでは愚直に表示処理だけ、というのが好き。
721714:03/08/17 23:57
>>715
検索の結果、該当件数が0件だったら「該当するデータがありません」ていう
内容のタイルにフォワードする。

>>719
俺は、<logic:*>タグのやってることはVに含めるべきものじゃないと
いう考えなので。
722デフォルトの名無しさん:03/08/18 00:07
>>721
<logic>タグはVに含めないとは、やりすぎでしょう。
「見栄え」に関するロジックは<logic>タグでやるべきでしょ?
723デフォルトの名無しさん:03/08/18 00:14
>>720
あなたの言っていることは、
一般的な
JSP(Viewロジックあり)-Action(Viewロジックなし)
ではなく、論理的な2種類のActionを用意して、
JSP(Viewロジックなし)-Action(Viewロジックあり)-Action(Viewロジックなし)
とするってこと?

まさか、Actionはごった煮?
JSP(Viewロジックなし)-Action(Viewロジックあり)
こんなのは絶対いやだ。
>>720
「繰り返し」というある程度のロジックを導入しない限り、
繰り返した中身全体をView以外で用意しなきゃならない。

表示はHTMLという制約があるとするなら、その文字列中に
「表示制御用」の文字列も含まなきゃならない。
つまり、View以外が表示の仕方を司ることになる。
725デフォルトの名無しさん:03/08/18 00:35
HTMLに関する知識は、Actionは知らないほうがいいだろう。
そうなると、HTMLに関する知識は、すべてJSPとなるだろう。
もちろん、JSPにすべて書けという意味ではないよ。
>>719 が触れているViewオブジェクトというのもありだとは思うが、
>>718 が言っている Taglib を自作するのが一番きれいに書けるだろう。

まあ、よく Taglib は敷居が高くて使ったことありませんなんてことを
耳にするが、甘えんな!と一言言ってやろう。
>>725
でもそれって、結局logicのようなタグを作るってことだよね。

logicのようなタグも使わず、なかおつHTMLに関する部分はView以外に書かないという
「真のMVC厨」は一体どうしているのだろう。
View用のlogicはStrutsのtaglibなんて使わないで、JSTLのcoreタグ使えよ。
俺はStrutsのtaglibで使うのはhtmlだけ。
728デフォルトの名無しさん:03/08/18 01:33
>>726
「真のMVC厨」はlogicのようなタグは使うだろ。
誰が使わないなんて言ってるんだ?
君の脳内?
729デフォルトの名無しさん:03/08/18 01:34
>>727
君の言っていることはごもっともだが、今はそれを論じる流れではない。
>>714 が言ってる様なのですが(View以外云々の部分はMVC厨の前提なので当然)。

彼(女?)の「logicタグを使わない設計」って、もしかして <logic:*> という
タグを使わないけど、結局似たようなタグは使いますよという、言葉遊びなんですか?

どんな素晴らしい方法があるのか楽しみだったのに、がっかり。
731デフォルトの名無しさん:03/08/18 02:11
>>730

>>714 の言葉を額面どおり受け取ってはいけないだろう。
logicタグ=if文の代わり
と考えれば、
logicタグを使わない=分岐なし
となる。
JSP内で分岐を使わずに構造的に動的なHTMLを生成するためには、
その分岐ロジックを別の場所で記述する必要がある。
その別の場所が、Actionだったり、Viewオブジェクトだったり、
Taglibだったりするというだけの話だ。
とびきりの魔法があるわけではない。

もちろん、
logicタグ=for文の代わり
と考えた場合も同様の議論は可能。


まあ、少なくとも、分岐なし、繰り返しなしではほとんどの画面は作れないから、
それ自体を否定するほうがどうかしている。
ActionでHTMLをベタで生成なんてのは、最も避けたい。
732デフォルトの名無しさん:03/08/18 08:28

どこまで、サーブレット側でデータを整形させるかポイントだね
出力がJSPだけとは限らない場合も考えると、コレクションや配列までの方が良いかも
それをどう表示するかがVの役目だとおもう。
どうしても、JSPで繰り返しや分岐をやりたくないのなら
さらに間にデータ整形のフィルタなどかませる方が、いいのかも。
いわゆるXMLにおけるXSL的な位置付けのロジッククラス作るとか。
こんな設計は怒られるか?
733714:03/08/18 11:20
<logic>タグ全否定は言い過ぎでした。
要は<logic:equal>系のタグでBeanの状態見て分岐するような
ロジックはJSPに含めないということです。

単にAction内で

String forwardName;

ArrayList result = fetchUsers("条件");
if (result.size() < 1) {
forwardName = "userlist_available";
request.setAttribute("userlist", result);
} else {
forwardName = "userlist_unavailable";
}

return mapping.findForward(forwardName);

とするだけですが、JSPをデバッグするよりもJavaのソースを上記の
ように書いた方が状態を把握しやすいので。
>>712
そう思うなら、Jakartaのメーリングリストにそう書いてみれば?
もし可能なら、修正したソースをあげればいいじゃん。

で、二つの変数を比較するというのなら、Velocityで可能。
735デフォルトの名無しさん:03/08/21 11:16
>>733

それって、ほぼ同じJSPが2個できるわけですよね?

なぜか私のまわりでは、
動的に表示するのがユーザの一覧だけという画面も、
仕様、デザインが納品まで普遍だったこともないので、
MVCがどうこう以前に、そんな修正しづらいのありえないっす。

Beanの状態を見て、一部表示を変えるだけなら、
<% if (result.size() < 1) { %>
でいいのでは?

else if 追加することになったときに、
<logic:*>だと直せる人少ないでしょ。
736714:03/08/21 11:37
>>735
Tiles使ってるんで共通部分は1ファイルになります。
<% if (result.size() < 1) { %> なんて記述したらHTMLの
プレビューがしにくくない?
737デフォルトの名無しさん:03/08/21 11:41
>735
素人?
738デフォルトの名無しさん:03/08/24 13:19
こんにちは。

JSP→servlet→JSPという感じで、formで受け取った日本語文字列をservletで受け取って、別のJSPで表示させるというものを作っているのですが、
servletでrequest.getParameter()した時点で、文字化けしてしまいます。
ただし、request.getParameter()する前に、request.setCharacterEncoding()してあげると、正しく表示されます。

ちょっとわけあって、servletにはエンコードがどうこうという記述をせずに、JSPだけでエンコードの指定をするようにしたいのですが、無理なのでしょうか?
希望としては、servlet内ではなく、表示用のJSPのスクリプトレット内に、request.setCharcterEncodingを書きたいのですが、そうすると上手くいきませんでした。

質問がへたくそですみません。
>>738
Strutsとは関係ない。スレ違い。
フィルタ使えば?
>>738
>JSPだけでエンコードの指定をするようにしたいのですが、無理なのでしょうか?
無理。
HTTPで渡されるリクエストにエンコーディング情報は乗っていない。
>>739 の言うようにフィルタを使えばいいじゃん。
741デフォルトの名無しさん:03/08/24 14:55

おかねもうけ情報見つけました

http://pocket.muvc.net/job/index.html
742デフォルトの名無しさん:03/08/24 16:22
ストラツって何が便利なんですか?フレームワークなら自社製が最強かと。
誰か、ストラツのメリットを網羅汁。
>>742
自社製使えば?
744デフォルトの名無しさん:03/08/24 17:24
>>742
その自社製のメリットをオマエが網羅したら、
それに対してコメントしてやる。
シャンプー
>>742
その自社製フレームワークを作った開発者がStruts作っている連中よりも
スキルも経験も豊富で、Strutsよりもきめ細かにメンテが行われ、
Strutsよりも多くのユーザに使われ、Strutsよりも既にスキルを持った
エンジニアを確保しやすく、開発後のメンテを他社に任せるような場合でも
すぐに仕様を理解できるようなドキュメントや情報がStrutsよりも
豊富であるのなら「最強」と言っても良いだろう。
747デフォルトの名無しさん:03/08/24 20:46
自社製フレームワークを開発しないですむ。
ドメインフレームワークも作らないですっぴんで使えるなんて
もまいらよほど小さなプロジェクトばかりなんでつね
>>748
比較対象が違うだろう。
何かしらのものを作るにしてもStrutsベースにするとか、
VCはStrutsをそっくりそのまま使うとかそういう方向に
最近は持って行くな。
まぁ、日航の予約画面の拡張子が、こっそりdoになってたりするわけだが。
751332:03/08/25 02:23
すくなくとも、おまえの会社とJakartaの組織はクラベモノニナラナイケドナ
>>751
独り言はメルヘン板で
>>742の会社が某フレームワーク販売系という可能性は?
それだったら、自社製が一番だと思ってもOKだと思うけど。w
ところで最近Viewロジックなに使ってます?
Strutsタグ?JSTL?Velocity?
755デフォルトの名無しさん:03/08/26 06:50
>>754
XSLで、どかーん!
>>754
Velocityで、らくらく
VIEWに渡さず、メモリを直ダンプ
>>746
が全てを語ってると思うなあ。

自社製フレームワークを作る人たちは、頼むから「良くあるフレームワーク
と同じレイヤ」を作るのやめてください。

ドメイン専用フレームワーク

Strutsとか

Servlet

にすればいいのに、なんで

(自称)万能(でも欠陥だらけ)フレームワーク

Servlet

にしたがるのですか?

Strutsあたりのソース読んで「これなら俺でも作れる」と思うのは分かるけどさ。
>>758
技術者魂を勘違いして、なんでも自作しないと落ち着かない視野の狭い人っているよね。
客要件で作れというならいいけど、コストとか考えて総合判断しないとだめなのに。
760デフォルトの名無しさん:03/08/28 09:24
>なんでも自作しないと落ち着かない視野の狭い人
API自体はOKなのか?自作しなくても・・・
>なんでも自作しないと落ち着かない視野の狭い人
NIH症候群と昔はいったものだ。
Strutsを覚えるのがめんどくさい、という後ろ向きな発想から
自作フレームワークを作る人もいる。
フレームワークの作成と保守のコストはどこから出てくるんですか?
763デフォルトの名無しさん:03/08/28 16:35
>>762
そうすると、自分以外の人に使い方を教える時に苦労するよね。
Strutsなら解説本がピンからキリまであるのに。
764デフォルトの名無しさん:03/08/28 16:47
自分の作ったものならそいつも教え甲斐があるんじゃない?
そいつがいつまでも教えられるとは限らない。
人事異動、転勤、転職・・・・・
そいつが消えるとフレームワークのメンテも進化も不可能になるヨカーン
766デフォルトの名無しさん:03/08/28 17:38
マニュアルぐらいそいつに書かせればいい
それだけ優秀なフレムワークなら説明も簡素だろ?
Actionクラスには、ビジネスロジックとかDBアクセスのコードを書かないほうが
いいんだよね?
768デフォルトの名無しさん:03/08/29 10:46
>767
それは当然です。
結局Actionクラスには何を書けばよいのでしょうか?
>>769
ビジネスロジックの呼び出し。
ビジネスロジック層のエラー処理。(適切なエラーメッセージの構築、フォワードなど)
表示用ビーンの準備。
771767:03/08/30 13:30
ビジネスロジックのクラスから、struts や tomcat の環境に依存するものを
徹底的になくして、ビジネスロジックのクラスをjavaのコンソールからでも
実行(テスト)できるようにしたいんだけど、これってアリ?
それとも、かえって複雑になっちゃうかな?

むしろそうすべきだと思う
当然、ServletRequestとかのオブジェクト渡さない限りOKだと思う
>>771
>ビジネスロジックのクラスから、struts や tomcat の環境に依存するものを
>徹底的になくして、

当然、そうする。
Transfer Object パターン(昔のValue Object パターン)や
Business Delegate パターン、Session Facade パターンを参照するべし。
774名無しさん:03/08/30 15:18
Actionクラスにはインスタンス変数書きまくりです。
>774
それは、どういう釣りだ?
776デフォルトの名無しさん:03/08/30 16:02
最近Jakartaプロジェクト関係の本がやたらと出版されてるな。
みんなの会社って
実際業務でJakarta(含めその他のオプソlib)って使用可能?
778デフォルトの名無しさん:03/08/30 16:40
777げっと
>>777
普通に
Linux + Tomcat + Struts + PostgreSQL でシステム組んで納品してる。
開発環境はEclipseだし。
Log4JとかCommonsのライブラリも使いまくり。
J2EE関係でJakarta禁止にしたら、仕事にならない。
>>780
すべて有償のソフトにそろえるという手はないの?
(すごくいやだけどw)
有償も Jakarta ベースが多いという罠。
783デフォルトの名無しさん:03/08/31 19:55
>>779
いいね。大企業製の独り善がりフレームワークも、コストパフォーマンス
の関係で駆逐される時がどんどん近づいてるね。
784779:03/08/31 20:06
でも、これは小中規模のシステム。
数十万ページビュー/日クラスの大規模なやつはやっぱり
Solaris + WebLogic + オリジナルフレームワーク + Oracle
ってなパターンになる。フレームワークがオリジナルなのは
すでに稼働しているシステムの機能追加が多いから。
これから新規に組むのならアプリのView/ControllerはStrutsベースに
なるのはほぼ間違いない。
大規模だとTomcatやPostgreSQLではどうしてもチューニングしきれない部分がある。
>>784
んなこたぁないと思うぞ。
たまたま君がやった案件がそうだっただけだろう。
TomcatやPostgreSQLなんて、そんなに検証しないで
やっぱ駄目だねってなってるんだと思う。
問題は、検証させてくれる時間がないこと。
>>784
SunOne AppServerのServletエンジンはTomcatなわけですが。
ポスグレで、オラ並みのカリカリチューンはたしかにムリですね。

サーバーマシンが安価になってくんだから、DB鯖も適当に機能
で区切って分散に逃げるようになるのでは。
そしたら単体のRDBMS鯖毎にチューンする必要なくなったりす
るのでは。
787784:03/09/01 08:33
TomcatではWebLogicに比べてクラスタリング機能まわりに不満があります。

>>786
ServletコンテナにTomcatを使っているかどうかはあまり関係ない。
その製品がさらに付加機能を装備していればTomcatより多機能、という
ことになりますよね?
788デフォルトの名無しさん:03/09/01 19:50
1)DTO(Data Transfer Object)って、位置付けはモデルでいいんでしょうか?

2)ウマ本(日本語版P154)で、ビジネスインターフェースを定義する際、
IStoreFrontインターフェースがIAuthenticationクラスを継承していますが、
これはどんな意図があってのことでしょう?
>>787
んじゃ
Linux + Tomcat + Struts + PostgreSQL + JBoss + OpenMQ

でいいじゃん。
790デフォルトの名無しさん:03/09/01 21:37
>788
DTOはドメインモデルじゃないね。
大量のデータをビジネスロジックとプレゼンテーションロジックの間で
運ぶためだけに存在すると考えたほうがいい。

たとえて言うと、非正規化したテーブルのようなものかな。
791788:03/09/01 21:59
>>790
ありがとうございます。

DTO、パッケージjp.co.kaisha.appname.modelに入れてましたが、
jp.co.kaisha.appname.viewか、jp.co.kaisha.appname.dtoに入れることにします。
792デフォルトの名無しさん:03/09/02 02:15
>>744
オタンコナスビは粋がるな
793デフォルトの名無しさん:03/09/02 12:21
>>792
お前はオナニーフレームワーク使ってろ。
794デフォルトの名無しさん:03/09/03 13:38
ボタンを押して、右のリストから左のリストへデータを移すというような処理
の場合、いままではjavascriptで書いていたのですが、このような処理もstruts
で可能なのでしょうか?
>>794
可能だけど
何らかの処理をサーバ側に渡す必要なければ
俺だったらJavaScriptで行きます
>>794
ボタン一回押すごとにサーバに問い合わせなおすなんて、ユーザが怒る
とおもうじょ。
797デフォルトの名無しさん:03/09/03 16:14
>>795-796
ありがとうございます。こりこり書きますわ。
基幹業務をWEBアプリでリプレースしようなんて無理があるつーの。
そう思わん?
>>798
スレ違い
>>798
君の技術力に無理があるのでは?
801デフォルトの名無しさん:03/09/07 11:04
Strutsタグでhiddenとかを記述しようとしたとき、リクエストパラメータ名と
Beanのプロパティ名って、どうしても同じになっちゃうんですか?
例えばcompanyBeanのnameってプロパティをcompanyNameってパラメータ名で
サーバに渡したいときって、どう書けば良いんですか?
BeanInfoを書く。
803デフォルトの名無しさん:03/09/17 11:03
ユーザーの編集権限ごとにフォーム上の編集可能フィールドを切り替えたい場合など、
どうされてます?

今はstrutsのlogicタグを使い、

<logic:equal name="user_role" value="Administrator">
<html:text property="foo" value="<bean:write name="bar"/>"/>
</logic:equal>
<logic:notEqual name="user_role" value="User">
<bean:write name="bar"/>
</logic:notEqual>

などとやってますが、かなり汚い予感。
やっぱり別ファイルにすべきでしょうか?
しかしそうなると、画面メンテの手間が倍になるし。。。
悩みどころです。
>>803
条件に応じて表示、非表示あるいは有効無効なんて全然汚くない
むしろ常套手段
将来的なことを考えてサーブレットで遷移先決めるのかJSPで処理するのか決めればいい
どっちがいいとは言い切れない
805デフォルトの名無しさん:03/09/18 19:40
radioボタンを選択状態で表示するにはどのようにしたらいいのでしょうか?

ActionFormのプロパティの値がvalue属性の値と一致すると選択状態になる
ようですが、この意味がわかりません。
現在、アクション側で以下のようにデータをセットし、
ArrayList sentaku = new ArrayList();
sentaku.add(new LabelValueBean("No.1", "1"));
sentaku.add(new LabelValueBean("No.2", "2"));
request.setAttribute ("sentaku",sentaku);

jsp側でこのようにして表示しています。
<logic:iterate id="row" name="sentaku" >
<html:radio property="SENTAKU" value="value" idName="row"/>
<bean:write name="row" property="label"/>
</logic:iterate>
806805:03/09/19 11:57
ActionFormでセットするだけでできました。よく調べないで、すみません。
807803:03/09/19 13:38
>>804
ありがとうございます。
これで安心してStruts道をつきすすめそうです。

例えていうなら、自分がみにくいアヒルの子だとおもっていたのを、
「実はおまえは白鳥だ」とおしえてもらったような。。。

ちょっとちがうか。

尻が二つに割れてることに悩んでいたら、「みんな割れてるんだ」
と尻を見せてもらったような。。。

またちょっとちがうか。

と、とにかく感謝です。
808デフォルトの名無しさん:03/09/20 00:40
Actionを呼び出す際に<form:form action="/regist.do">
って書く場合もあれば、<form:form action="/regist">
みたいに、doを省略するのもありなんですか?
なんか、doってのが気になってます。
809デフォルトの名無しさん:03/09/20 18:58
質問させてください

WebアプリのMVCの設計方法を勉強しようとしていますが
Strutsつかうまえに設計方法を熟知した上で使うべきなんでしょうか?
それともStrutsつかってればそういうの設計知識はみにつくんでしょうか?
>>808
<html:form>の action属性には、対応する<action>要素のpath属性の値を書くのが基本。
ただし、*.doの形式のマッピングを使用している場合は、".do"をつけても良い。

If you are using extension mapping for selecting the controller servlet, this value should be equal to the path attribute of the corresponding <action> element, optionally followed by the correct extension suffix.
>>809
Strutsを使っても、MVCを無視した実装は可能だ。
書こうと思えば、JSPファイルにビジネスロジックを書くことだってできる。

実装と設計は別物だ。
良い手本にしたがって学ばないとMVCは身につかないと思う。

最低でも、J2EEパターンの知識は必要だろう。
>>811
ありがとうございます。これで当分はStruts忘れられます
813デフォルトの名無しさん:03/09/21 13:12
ちょっと質問なんですが
LookupDispatchActionつかってsubmitボタンによって処理を振り分けているのですが
ボタンのラベルが日本語だと上手く動かないんですが、そういうものなのでしょうか?
リソースファイルには

button.delete=削除
button.edit=編集

と書いて、JSPの方は

<html:submit property="action"><bean:message key="button.edit"/></html:submit>
<html:submit property="action"><bean:message key="button.delete"/></html:submit>

アクションの方には

protected Map getKeyMethodMap() {
Map map = new HashMap();
map.put("admin.common.edit", "edit");
map.put("admin.common.delete", "delete");
return map;
}

ってメソッド書いているのですが、動きません

リソースを
button.delete=Delete
button.edit=Edit
というふうに、日本語じゃなければ動くのですが、どうすればいいですか?
ちなみに日本語をURLエンコードしてその文字をプロパティーに書けばいいのかと思っているのですが
URLエンコードってどういう風にするのかわかりません
「編集」「削除」の文字だけでもURL表記でどういう風に書くか教えてくれませんか?
ちなみに、リソースファイルはもちろんnative2asciiで変換しています
>>813
URLエンコードじゃなくて、リクエストパラメータのエンコーディングの問題と思われ。
ボタンのラベル以外(テキストボックス等)のパラメータ値が日本語の場合はうまく扱えてる?
あと、ボタンのラベルのキーが
button.delete
button.edit
なら、getKeyMethodMap()は

protected Map getKeyMethodMap() {
Map map = new HashMap();
map.put("button.edit", "edit");
map.put("button.delete", "delete");
return map;
}

じゃないのか?
>>815
>URLエンコードじゃなくて、リクエストパラメータのエンコーディングの問題と思われ。
ええ、あまり詳しくないので呼び方がわかんないんですがスイマセン
ていうか、さっき検索サイトで「編集」入力してやってみたら
%95%D2%8FWという文字になりました、
これでちょっと試したんですが
コレでもダメでした

>ボタンのラベル以外(テキストボックス等)のパラメータ値が日本語の場合はうまく扱えてる?
これは、リソースファイルが正しく表示されているかという事ですか?
それは問題ありません

>>816
あ、それは写し間違えました スイマセン読み替えてください



エラーの内容は「マッピングされていない」という内容のエラーなので
中に入っている文字と、送られてくるSubmitボタンのラベル文字が違うんだと思います
ちょっと、中身覗いてみます
> %95%D2%8FWという文字になりました、
> これでちょっと試したんですが
> コレでもダメでした
だから、URLエンコードの問題じゃないってば。

> これは、リソースファイルが正しく表示されているかという事ですか?
ちがう。ブラウザ上でテキストボックス等に入力した文字がサーバ側で
化けないで正しくハンドリングできているかどうかだ。
819デフォルトの名無しさん:03/09/21 14:21
で、美空たんのパンチラ画像UPはまだですか?
>>818

スイマセンやっぱり指摘のとおりでした
フィルターかませて対応しました

しかしフィルタ使おうと思ったらweb.xmlのエラーがでるので
何でかと思ってたら、Strutsのやつって
<!DOCTYPE web-app
PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.2//EN"
"http://java.sun.com/dtd/web-app_2_2.dtd">
になってるし・・・余計な時間使ってしもた 久々につまんない事ではまった
>>820
Strutsそのものは一応、Servlet API2.2から対応だからね・・・
>>803
お前の予感は正しい

>>804
典型的アンパタ
うっせばーか
レベル低い奴が多いな・・・
>>822
では、正しい方法を教えたもれ
826デフォルトの名無しさん:03/09/27 09:32
スイマセン質問です

個々のアクションサーブレットに初期パラメータなどを与えたいのですが
どうすればいいのでしょうか?
普通のサーブレットで言う所の
web.xmlに
<init-param>
<param-name>value</param-name>
<param-value>2</param-value>
</init-param>
としておいて
getInitParameter("value")
みたいなことを、アクションサーブレットでもやりたいのですが
struts-config.xmlのアクションマッピング要素にどのように書けばいいのかわかりません
教えてください
>>826
> 個々のアクションサーブレットに
この時点で激しく勘違いしている予感。
アクションサーブレットはアプリケーション中に一つしか無いぞ。
struts-config.xmlのアクションマッピング要素はアクションサーブレット
とは無関係だぞ。
828826:03/09/27 10:04
>>827
ありがとうございます

>アクションサーブレットはアプリケーション中に一つしか無いぞ。
まあ、文章的に間違っていますがそれは理解しています
それから呼び出されるActionクラスと理解してください

>struts-config.xmlのアクションマッピング要素
と書いたのはあくまでも、個々のサーブレットに対して指定する場所は
struts-config.xmlのこの部分しかないと思ったからです
この場所がマッピング指定に使うことはわかっています

で、普通にweb.xmlに826のような方法で書いてもいいのですが
なんかやり方があるのではないかと思っただけです

あるいは、別の方法として
Strutsのメッセージリソースバンドルファイルから
サーブレット内で値を取得しようと思っているのですが
(JSP内でいうところの<bean:message key="***.***"/>)
こういうやり方が妥当なのかわかりません


> まあ、文章的に間違っていますがそれは理解しています
自分でわかっていても他人にわかるように書くことはとても大切なこと。
これだと「自分ではわかっている」ということが他人に伝わらない。

> あるいは、別の方法として
> Strutsのメッセージリソースバンドルファイルから
> サーブレット内で値を取得しようと思っているのですが
> (JSP内でいうところの<bean:message key="***.***"/>)
これが一番手軽かな。
ActionクラスにgetResources(request)というメソッドがあり、
これを呼ぶと、org.apache.struts.util.MessageResourcesオブジェクトが
戻ってくる。このオブジェクトにメッセージリソースファイルの内容が
読み込まれていて、キーを指定して値を取り出すにはMessageResourcesの
getMessage(key)メソッドを呼ぶとjava.lang.String型で値が取れる。
具体的にはexecuteメソッド内で

org.apache.struts.util.MessageResources getResources= getMessage(request);
String value = resources.getMessage("キー");

ってかんじ。
メッセージに可変文字列({0}とか{1}とか)あるのなら
getMessage("キー"); じゃなくて
getMessage("キー", "文字列1"); とか
getMessage("キー", "文字列1", "文字列2"); とか。





830826:03/09/27 10:34
>>829
ありがとうございます
気をつけます
831デフォルトの名無しさん:03/09/27 15:34

質問なんですが
request.setAttribute("text",">");
という風に、文字列列をリクエストスコープにセットしたのですが
ブラウザに表示されるソースの内容は>に変換されてしまいます
こういう機能をを無効に出来ないでしょうか?

使っているサーブレットコンテナはTomcat4.1.24なんですが
Tomcatの機能なのかStrutsの機能なのかその他の機能なのかわかりません
お願いします教えてください
832831:03/09/27 15:35
訂正
>ブラウザに表示されるソースの内容は&lt;に変換されてしまいます
Strutsのstruts-beanタグライブラリを使っていると自動的にそうなります。
それを抑制するときはこう書きます。
<bean:write name="text" filter="false"/>
834デフォルトの名無しさん:03/10/03 01:46
Validatorの奥義を教えてください。

一つの画面に複数のsubmitボタンを配置し、
ボタンにより駆動するactionをdispatchさせたいとします。
クライアントサイドでJavascriptによるValidationをさせたいとします。
押下されたsubmitボタンによりformのvalidationの仕方を変更するには
どうしたらよいのでしょうか?

validwhenは1.2からだし...
requiredifはうごかないし...
複数の<html:form>を設定する全部validateしちゃうか、
一番最後のformのvalidatorしか動かないし...
>>834
field,fieldTest,fieldValueをちゃんと設定すればrequiredIfは動くよ。一応。
あ、クライアント側検証では使えないってこと?それは確かに。
サーバー検証じゃだめ?
なら、自前の検証ロジックをJavaScriptでゴリゴリ書くしかないね。

JavaScriptでの検証は、俺は基本的に好きじゃなかったりする。
1)ブラウザ設定で無効にできる
2)Application.properties(_ja)からエラーメッセージを取るとして、
 ・'<li>エラーメッセージ</li>'と書いておくと、JvaScriptでのエラー表示がまぬけである。
 ・'エラーメッセージ'と書いておくと入力画面に戻ったときのエラー表示がまぬけである。
3)バグがあったりするらしい。

からなんだけど、みんな使ってるん?
>>835
1) だから、サーバー側検証と組み合わせて使うんでしょ?
  高負荷なシステムでは少しでもサーバやネットワークの負荷が減らせて
  いいと思うけど。
2) メッセージリソースファイルにerrors.prefix=<li>、errors.suffix=</li>
  って書けばいいのでは?
3) 具体的にどれよ?
837835:03/10/06 10:17
>>836

1)そうなんだろうね。ただ、昔各ブラウザのJavaScriptの実装の違いで相当汗を
書かされた記憶があるので、JavaScriptと聞くだけで及び腰になってしまうのよ。

2)これは気づかなかったよ。なるほどね。

3)(鵜呑みだけど)「カンタン」本のValidatorの解説では、
・minlength,maxlengthルールのpasswordフィールドでのJavaScript生成
・integerルールのJavaScript生成
にバグがあるとされる。
Struts1.1RC1では、とされているので、現在は直っているのかもしれない。
>>837
1) ブラウザ依存はほとんどの問題が表示処理に絡んだ部分じゃない?
  validatorの生成するJavaScriptで問題が起こった人いるのかな?
3) RC2→finalの時にfixされた。ApacheのBugzillaは公開されているんだから
 それぐらい調べようや。
839デフォルトの名無しさん:03/10/06 14:33
1)の話についてだが

こんなもんサーバ負荷になるのか疑問だ
これが負荷になるんだったら、Webサーバ自体成り立たない

理由はクライアント側で検証した方がレスポンス早いからでしょ?
840デフォルトの名無しさん:03/10/09 21:36
ところで、StrutsのWebアプリケーションを起動した時点で、
アプリケーションスコープに幾つかのBeanを置いときたい
のだが、どうすればよいのだ???
ActionServlet の init() をオーバライドするしかない
のか?
>>840
・StrutsのPlug-inを作る
・ServletContextListenerを使う
お好きな方をどうぞ。
842 :03/10/09 22:48
あはは、すとらっつ使えると。普通のJSP、サーブレットがばかばかしくなるよ!
>>840
>>841
・別のServletのinitメソッドに書いて、load-on-startupをActionServletより前にする。
>>843
それはちょっと・・・・
あまりにも強引。スマートさに欠けない?
841が妥当な線だと思ふ。
>>841
ありがとごぜーますだ。
PkugIn でがむばってみます。
>>844
Servlet2.2だったらそうするしかない。
Lisner が整備されたのは 2.3 からだし。
>>846
Servlet2.2でもStrutsのプラグインなら問題ないんじゃない?
848デフォルトの名無しさん:03/10/10 22:14
>>842
それは言いすぎだろ
なにせサーブレットといってもHttpサーブレットだけではないのだから
鳩サーブレット
鳩サブキターーーーーー
原材料:鳩
852デフォルトの名無しさん:03/10/11 19:36
TileのレイアウトにAction(.do)をputするのっておかしい?
アクションマッピングのフォワードで、ページ内ジャンプを指定したく、
こんなの書いてみたけどダメでした。
<forward name="success" path="hoge.do#tobe"/>
どうすれば良いのでしょーか!?
>>849-851
当然、下位のプロトコルにはRFC1149が使われているんだろうな。
>>854
いいえ、鳩山元代表がデータ送受信します
>>853
redirect=trueにしろ
853の便乗質問なんすけど、
#以下の名前(前例では"tobe"の部分)
を動的に変えることはできるのでしょうか。
ちなみに携帯サイトなんでjavascriptは使えませんです。
シンプルなDB登録→表示アプリケーションで、英・日両言語で入力できるよう、
RadioButtonの選択肢をリソースバンドルから取得するようにしました。

{JSP}
...
<html:radio property="animal" value="cat"><bean:message key="entryform.option.animal.cat"></html:radio>
<html:radio property="animal" value="dog"><bean:message key="entryform.option.animal.dog"></html:radio>
<html:radio property="animal" value="rabbit"><bean:message key="entryform.option.animal.rabbit"></html:radio>
...

{表示(日本語)}
◎ねこ
◎いぬ
◎うさぎ

ひとまず入力はこれでOKでした。
問題はDBに登録した値を取り出して表示する画面です。
DBには"cat","dog"などのvalueが登録されており、取り出した値はリクエスト属性のbean"result"に"animal"
というプロパティ名で格納されているとします。
"cat","dog","rabbit"などの値でリソースバンドルから「ねこ」、「いぬ」、「うさぎ」などのメッセージを
引き当てるうまいやり方はないでしょうか?

まず(かなり横着ですが)、
<bean:message key="entryform.option.animal.<bean:write name="result" property="animal">"/>
とやったがコンパイルエラー、
次に
<bean:define id="tmpanimal" value="entryform.option.animal.<bean:write name="result" property="animal">">
<bean:message key="entryform.option.animal.<bean:write name="tmpanimal" property="animal">"/>
同じくコンパイルエラーでした。

bean:messageを拡張したカスタムタグでも書くしかないのかなぁ。
859858:03/10/14 16:30
(誤)
<bean:define id="tmpanimal" value="entryform.option.animal.<bean:write name="result" property="animal">">

(正)
<bean:define id="tmpanimal" value="entryform.option.animal.<bean:write name="result" property="animal">"/>

転記ミスです・・・タグが閉じられてないためコンパイルエラーになったのではありません。
>>857
sendRedirect()しろ。
ストラッツタグ同士でそういう風に入れ子には出来ないので
<% %>使うしかない
>>860
ActionクラスでsendRedirect(url)を呼ぶん?
struts-config.xmlで画面遷移を一元管理できることが
strutsの特徴の一つだと思ってたんですけど、
んーなんかなー。
もちょっとうまい仕組みはない?
TagLibについて質問です。
<html:form action="hoge">とした場合、実際に出力されるhtmlのソースでは
<form action="hoge.do">となるようなのです。かってに".do"がつくようなのです。

これってうちだけなのでしょうか?
もしそうでないなら、どこで".do"を自動的につけるよう指定されているのでしょうか?
ちなみにweb.xmlの<servlet-mapping>の<url-pattern>を書き換えてみましたが、
関係ありませんでした。やっぱり".do"が付加されていました。

あと、この情報は、Web上でどこを見たら分かるでしょうか?Jakartaの和訳サイトを
見ていますが、量が多すぎるのか、見つけられないです…。
864デフォルトの名無しさん:03/10/16 12:19
>>864
怪しいと思ったカスタムタグのソースを見れば一発。

この場合は、まずsrc/share/org/apache/struts/taglib/html/FormTag.javaの
renderFormStartElement()メソッドを見てみる。
すると、action属性の値をTagUtilsクラスの
getActionMappingURL(String action, PageContext pageContext)メソッドに
渡してから出力しているので、
src/share/org/apache/struts/taglib/TagUtils.javaの該当箇所を見れば
いいことがわかる。

TagUtils.javaのgetActionMappingURL(String action, PageContext pageContext)の
定義を見てみると、web.xmlの<servlet-mapping>の子要素<url-pattern>で
設定した内容が、「*.で始まる場合」、「/*で終わる場合」、「/の場合」の
三通りで生成する値が異なっていることがわかる。
actionの内容に拡張子が付加されるのは一番目の「*.で始まる場合」で、
付加される拡張子は<url-pattern>の内容から最初の*を省いたものである
ことがわかる(例えば.doなど)。

というわけで、この挙動をなんとかしたいならソースをいじれ、と。
>>864
ソースは読めても人の話を読めない人ハケーン

問題点はそこじゃないだろうに。
>>864
そこいじったらServlet API仕様からははずれてしまうのだが?いいのか?
867864:03/10/16 16:52
あれだけ書けば
「<html:form>のaction属性の値に.doが付くことは
問題でもなんでもない(から弄るな)」
ということはわかるだろうと思ったんだけどな。


868863:03/10/16 18:02
>>864-867
ありがとうございます。
web.xmlの内容が反映されていたのですか。おかしいなあ。昨日書き換えたときは
反応が変わらなかったのに。リコンパイルの必要があるのだろうか。
すみません、ちょっと事情があって、しばらく開発環境に触れられないもので、
試してみることが出来ないのです。

>>All
いじる必要はない、ということですが、まだ分からない点がございます。

・web.xmlの<servlet-mapping>は複数定義できますが、その場合、どのように
Actionの値が決まるのでしょうか?

・この挙動を説明している資料は、どこにあるでしょうか?どうしてこういう仕様に
しているのかよく分からないので、理解したいのです。出来たら日本語だと助かるの
ですが…。

何度もすみませんが、よろしくお願いいたします。
>>868
ソースは口ほどにものを言う。
864の導きに従い、読んでみれ。
870デフォルトの名無しさん:03/10/19 13:59
例外発生時のログ、どんな風にしてます?

1. 各Actionクラスでキャッチして、ログを記録。
2. ExceptionHandlerを継承して、FooExceptionHandlerを作ってそこでログ。
各アクションクラスではログを記録しない。一切のExceptionをcatchしない。

今までは1.でやってきたんですが、
2.のほうがActionの記述も減るし、例外処理を一元管理できるのが魅力かなぁと。

ご意見お聞かせください。
>>870
当然、2
おれは2のやり方が「当然」だとは思わない
ログだけなら普通にExceptionクラスの継承クラス作成して
それでログ書かせる。もちろん自作のAbstractExceptionにそれを実装するようにするわけだが。

ましてや、復旧作業なんてそこに到達する以前の階層で終わらせているはず。
Model層で復旧させておき
Actionには前述の派生Exceptionの中から
適当な例外を生成して投げる(内容はもちろん元の原因Exceptionをラップする)
configファイルでそのエラーが起きた場合の遷移先なり書けばいいと思うんだが
もちろんコレが正解というわけじゃないが
873デフォルトの名無しさん:03/10/19 15:43
2のやり方だとrollbackが必要な処理の時に困るよね。

俺の場合は、ExceptionHandlerにキャッチさせるのはできるだけ
アプリケーションパッケージ内で定義した例外(ロジックAの実行に
失敗した、みたいな)だけにしておいて、それ以外の低レベルな
例外はロジッククラスかActionクラスで捕捉&後始末しておく。

絶対やらないほうがいいのは
>各Actionクラスでキャッチ
Actionクラスでは全部スローしろ
でもまあ、設計なんて好きにやればいいんだけどさ
875870:03/10/19 16:04
>>873
そうですね、rollbackで困りますね。。

トランザクションを含むActionでは一旦DB例外をキャッチしてrollback、
ログはExceptionHandlerに任せようかなぁ。
同じ例外を二箇所で処理するってのは少し気持ちわるいですが。
rollbackはActionでやることか?
ビジネスロジック層でなんとか汁
>>876
俺もそう思う
でもまあ、よくよく考えてみれば
アクションサーブレットがコントロールで
それぞれのアクションクラスって言うのは
もうすでに、かけ離れた場所に存在するものだから
Model層と言ってもいいのではないかと最近思う
878873:03/10/19 20:48
>>876
当然、rollbackはビジネスロジックでやるよ。

Actionクラスで捕捉するのは、そのビジネスロジックから投げられる
LogicFailureExceptionみたいなもので、それに応じてActionErrorsを
セットしてるんだが。

で、DB落ちてますよとかセッション切れてまっせという種類の
例外については、Actionで捕捉せずにExceptionHandlerで受けてる。

トランザクション制御をビジネスロジック層でやるって、確かにそのほうが
きれいな設計なんだが、小規模程度でなければ激しく無謀な設計だろう。
>>879
大規模プロジェクトでは、きれいな設計は無謀と言ってる?
>>880
いいえ、トランザクションの制御要因にプレゼンテーション層の設計が
関わってくる箇所が少なからず出るということ。だがソレはそれで経験
ある人ならちゃんときれいに設計できる。無理にビジネスロジック層に
閉じさせようとするのが無謀という話。
テカリ具合。
883デフォルトの名無しさん:03/10/20 02:28
DB中のデータをCSVファイルに吐き出してクライアントにダウンロードさせる仕掛けを検討しています。
検索エンジンでファイルのダウンロードに関するサンプルを探したところVelocityを使用したサンプルを見つけのですが、実際のところどのような仕掛けが一般的に使用されているのでしょうか。
あわせてサンプルの在りかも教えていただけるとうれしいです。
宜しくお願いします。
JDBC
つか、君には無理
885873:03/10/20 13:29
>>881
それってHTTPリクエストを跨いだトランザクションですか?
Actionクラス内でトランザクションを管理せざるを得ない場面が
あるのはわかるけど、プレゼンテーション層が関わってくること
なんてありますか?

まあ、今時はトランザクション操作をAOPでやるのが流行りだから
どうでもなりますが。
886デフォルトの名無しさん:03/10/20 14:00
トランザクションは利用者側が制御するもの。

小規模ならActionが担当。
 Action→(JDBC)→DB
ちょっと凝るとビジネスロジック層Beanが担当
 Action→ビジネスロジック層Bean→(JDBC)→DB
EJB使うならSessionBeanが担当
 Action→SessionBean→EntityBean→DB

プレゼンテーションというのが「FrontControllerによるAction結果の割り当て」を意味するのならば、
まったくかかわる余地はない。
887デフォルトの名無しさん:03/10/21 03:00
なんでStrutsのスタックトレースは古いままなのか?
>>886
ActionとSessionBeanの間にDelegateつけろよ
3 億以上のプロジェクトで Struts 使った開発ってある?
俺的に大規模と中規模の境目ってこのへんなんだけど。
>>889
大規模だとStrutsが対応していないように聞こえるが・・・

厳密にいえば、プロジェクトにマッチしてなければ
Struts使うよりSEが設計したものの方がいい時もある
三菱銀行だったか忘れたが、今度通帳無くしてインターネッツ(ホームページ)経由で
顧客取引するらしい
 
コイツにStruts使うか否かはStrutsの機能性能云々なんて関係ない
合うか合わないかそれだけで検討するのが普通の考え
作業進行の方向性のフレームワークと言ってもいい
Strutsは土台だけしか提供してないのだからこれがいいとか悪いとか言うのはおかしい

別にActionクラスそのままで使うわけないんだしよ
ようするに、どこまで設計者がStrutsを拡張できるかどうかにかかっている
そういうのが気になるんだったらサーバに金かけたほうがいいと思う
>>889
知っているよ。
別チームがやる案件で某社の基盤整備でStruts使うとか言っているのを聞いた。

でもDBCPとかは使わないだろうね。
あんな要の部分は障害管理やアラートなどの運用体制を充実させたいだろうし。

Strutsはフレームワーク構築のためのフレームワークなんだから、
別に規模は関係ないよ

892 :03/10/23 23:53
Javaを知らない人間にStrutsを教えることになったにょ。
どこから教えればいいのやら。
>>892
Javaから
地頭いいやつなら一週間でOK。>>892
Strutsなんてカンタソ
895デフォルトの名無しさん:03/10/24 03:34
デスマーチで使い始めて一ヶ月。
ようやくStrutsの良さがわかってきた今日この頃。
でもそのよさはまだ文章にできない。
Struts?これ作ったやつはゲーム会社逝って勉強しなおせ
なにが間違ってるかわかるから
>>896
なにがまちがってんだ?
898デフォルトの名無しさん:03/10/25 13:06
'いずれのスコープにもbean hoge が見つかりません'

といわれたら、どこを疑えばいい?
タイポぐらい?
>>898
名前間違ってるか
きちんとsetAttributeしていないか
JSPのなかで受け取っていないか

900デフォルトの名無しさん:03/10/25 18:25
>>899
DynaActionForm派生クラスの#validate()で実際にはないプロパティを利用しようとしてたよ
ありがとう
901デフォルトの名無しさん:03/10/25 18:29
ところで、Action内でDynaActionForm派生クラスのインスタンスのプロパティーに値をセットすることはできないのか?
902デフォルトの名無しさん:03/10/25 18:30
>>901
map
903デフォルトの名無しさん:03/10/25 22:20
>>902
ああ、そうか!
Eclipseのデバッガで確認してみたよ。
ありがとう。
でも、画面を担当しているActionにまかせることにしたよ。
他のActionから別の画面のフォームを生成してsessionにセットするのはやめておくよ。
>>898
struts-config.xml のform-bean定義とJSPファイル内のフィールドの関連かな。

しまった・・・議論が終わっていた。
906デフォルトの名無しさん:03/10/29 00:54
TLDに従ってタグ bean:write は空でなければいけませんが、そうではありません'

って表示されたら、何をうたがえばいいの?
>>906
エラーメッセージ下手に訳さず、そのままノセロや
>>906
タグの > の前にスラッシュがついていないとか。
>>907
これ、そのままじゃないの?
うちでもタグを閉じ忘れたりするとこう出るぞ。
910デフォルトの名無しさん:03/10/29 03:59
'/'がなかっただけだった...お騒がせして申し訳ございませんでした。

911デフォルトの名無しさん:03/10/29 04:01
私も質問いいですか?

それまで順調に動いていたのに、いきなり、
「パス /login に対するアクションのインスタンスがありません」
と最初のページに出てくるようになったのですが、
どこを直せばよいでしょうか

なお、web.xmlの設定により、index.jspからlogin.doへ遷移してこのありさまです。
912デフォルトの名無しさん:03/10/29 04:16
>>911
login.doがみつからない
struts-config.xml でちゃんとActionクラスと関連付けられてるかどうか確認汁。
>>911
struts-configのpaht="/login"の"type"のクラス名やパッケージ名がちがうとか。
914デフォルトの名無しさん:03/10/29 14:36
>>912,913
Eclipseを使っていたのですが、一旦CVSを切断してリリースし、再びチェックアウトして
コンパイルエラーだらけで、login用のActionのインスタンスが生成されなかったようでした。
初歩的なミスですいませんでした。
915デフォルトの名無しさん:03/10/29 17:44
html:imageのindexedをうまく利用してlogic:iterateで繰り返して違う画像を表示させる例はありませんか?
916デフォルトの名無しさん:03/10/29 19:21
>>915
なぜそこまでわかっていて
自分で考えようとしない?
初心者ですいません。

Formでアクセッサからプロパティをgetしてくるのはいいのですが、
Actionクラスで、リクエストオブジェクトに
setAttribute("hoge", Object obj); などとセットした場合には
ビュー側では、どのようにgetすればよいのでしょうか?
<%=request.getAttribute("hoge")%> ではなく、strutsのタグを使って
処理したいのですが・・・

Web上で、少しはサンプル探したんですが良く分かりませんでした・・・
お願いします。
>>917
jstlでよければ
<c:out value="${requestScope['hoge']}"/>
みたいな。
>>917
<bean:write name="hoge"/>
>>917
<bean:define (略
じゃないか?
初心者ですいません。

JavaScriptで、別ウィンドウを表示させた際、その別ウィンドウを閉じると
セッションIDが変わってしまう現象が発生しているのですが、こう言う物な
のでしょうか???
防ぐ方法を、教えてください。
>>921
Javaではそういうことは起きないからJavaを使いなさい
923917:03/10/31 02:14
while(res.hasNext()) {
system.out.println("ありがとうございました。");
res.nextRes();
}
9241 ◆lqgT6FBSpw :03/10/31 06:24
>>918
<c:out value="${hoge}"/>
925921:03/10/31 10:05
>>922
サーバは、Sparc (Solaris) + Oracle9ias + Struts が動いてます。
別ウィンドウのオープンを、Java で組めって事ですか?

ちなみに、WinXP IE6 の環境で頻繁に発生するみたいなのですが、何か
設定しなきゃダメなのでしょうかねぇ?
>>925
たぶんもっと根本に原因がある。

1.session-timeout が異常に短い
2.APPサーバが複数台あって、負荷分散のとこでこけてる
3.色々と勘違い(アプリケーションの実装が下手糞)

元のウィンドウを閉じないで、そこから派生した別ウィンドウを
閉じるだけでSessionIDが変わるって事はまずないだろうから
3が正解じゃない?

ちなみにIE6で思い出したけど、フレームとかウィンドウで
開くページが別ドメインって事はないよね。
927デフォルトの名無しさん:03/10/31 15:58
[ServletException in:/hoge.jsp] / by zero'

なんでこんなエラーがでるんでしょうか(T_T)
原因や解消法をおしえてください。
928921:03/10/31 16:49
>>926 3.色々と勘違い(アプリケーションの実装が下手糞)

勘違いしてる面は多々あると思いますが、同じドメインで同じディレクトリィ
にあるjspを表示させてるですよ・・・ (;_;)

とりあえず、IE のイントラネット設定に当該サーバを追加したら、今の所再
現しなくなったみたいなので、これで様子みてみまっす。
ありがとうございました。
929デフォルトの名無しさん:03/10/31 19:03
927です。
Beanが生成されていなくて、割り算がある独自のタグリブないでのエラーでした。
失礼しました。
>>921
WebサーバとServletコンテナは何を使ってる?

昔、"http:" で始まるURLと"HTTP:"で始まるURLとで
異なるSessionを割り当てるWebサーバがあった。
(そいつは、Webサーバの一機能としてServletコンテナをサポートしていた)

URLの仕様としてはプロトコルやホスト部分は大文字小文字が関係ないはずなんだが、
そのWebサーバは別物として扱い、新規のセッションを割り当てていた。

まあ参考まで
質問です。
ActionFormBeanに、多重にネストした配列(またはコレクション)をプロパティとして
持たせることは、実用的に可能でしょうか?

単なるBeanでしたら、<bean:write name="hoge" property="foo.bar[0].baz[2]"/>
という形で、いくらでもネストしたBeanを呼び出せます。
しかし、これをすべての要素について手で書いていたら大変なので、
ふつうは<logic:iterate>タグを使って、>>246のようにあらわすわけです。

しかし<html:form>系のタグは、property属性と、ActionFormBeanのプロパティを
きちんと対応させるためには、例えば
Beanの getFoo.getBar(0).getBaz(2)というメソッドと対応させたいなら
タグのproperty属性もproperty="foo.bar[0].baz[2]"などと書かなければ
いけないようです。
そうしなければ、JSPでこのフィールドにユーザが入力した値が"aaaa"だとして、
サブミット時にBeanのgetFoo.getBar(0).setBaz(2, "aaaa")というメソッドが
呼ばれないからです。
つまり、<logic:iterate>タグが使えないようです。ちょっとこれは実用的では
ありません。

何か良い方法があるのでしょうか?それとも、ActionFormBeanで配列の入れ子を
プロパティとして持たせることは実用的でないのでしょうか?

また、>>247-248 を見ると、こういうデザインそのものに問題があるようです。
恥ずかしながら、その理由がわかりません。教えていただけないでしょうか?
>>931
struts1.1を使うのなら、nestedタグがあるよ
>>932
http://www.janit.com/TechnoInf/Java/Struts1.1b3/userGuide/struts-nested.html
こんなものがあったとは…。ありがとうございます。
まだよく分かりませんが、勉強してみます。

ところで、>>247-248 の議論は、まだ考えても分かりません。うう…。
934デフォルトの名無しさん:03/11/01 19:14
助けて下さい。

DispatchAction派生クラスからActionクラスへ遷移させているのですが、
何故かうまくいきません。

struts-config.xmlには以下のような感じで書いております。
hoge.do?operation=firstでhogeFirst.doを実行したいのですが。

<action name="hoge" path="hoge" type="hoge.hogeAction"
validate="false"
parameter="operation"
input="/error.jsp">
<forward name="first" path="hogeFirst.do" />
<forward name="sonohoka1" path="sonohoka1.page" />
<forward name="sonohoka2" path="sonohoka2.do" />
</action>
<action name="hoge" path="hogeFirst" type="hoge.hogeFirstAction"
input="/error.jsp">
<forward name="success" path="hoge.page" />
</action>
935デフォルトの名無しさん:03/11/01 20:40
934です。
formの意図しないvalidationがきいてしまっていただけでした。
失礼しました。
質問です。
セッションに登録されたオブジェクトはスレッドセーフでなければならないと
聞きました。同一ユーザによる多重サブミットなどへの対策ということです。

ActionFormBeanはふつうセッションに登録されていますが、これはスレッドセーフ
ではありえないと思うのですが、大丈夫なのでしょうか。

大丈夫でないのだとしたら、Strutsでアプリケーションを構築するときは
tokenを使った多重サブミット防止が不可欠ということなのでしょうか?
>>936
「スレッドセーフ」の意味から勉強し直してこい
>>937
無知で申し訳ありませんが、よろしかったら、もう少し具体的に教えていただけ
ないでしょうか?

こちらの話も具体的にしますと、
・ActionFormBeanのインスタンスはセッションに登録されている。
・同一ユーザからのリクエストには、同一のActionFormBeanのインスタンスが
 割り当てられる。
・サブミットしたとき、ActionFormBeanのgetterが呼び出されて、ブラウザの
送出した値がBeanに登録される。
・ActionFormBeanがActionオブジェクトに渡され、ActionFormBeanのgetterが
呼び出されて、その値をビジネスロジックに渡す。

不安なのは、ビジネスロジックに時間がかかって、複数のgetterを呼び出している
間に、ブラウザがもう一度リクエストを送出してきた(しかも前回とはフォームの
内容が異なっていた)場合、Actionサーブレット内でsetterが呼ばれて、
ActionFormBeanの保持する値が途中で部分的に書き換えられてしまうのではないか、
ということです。

ビジネスロジックにsynchronizedをつけても、これは防げないように思うのですが、
間違っていたら申し訳ありません。
訂正。

×サブミットしたとき、ActionFormBeanの『getter』が呼び出されて、ブラウザの
送出した値がBeanに登録される。
○『setter』

逆を書いてしまって、意味の通らない文になっていました。すみません。
すいません質問です。
Actionクラスとビジネスロジックを別のクラスにする場合についてです。

1.DBからデータを取得する。
2.ブラウザで入力したデータとDBから取得したデータをもとに計算をする。
3.計算結果をDBに登録する。

ロジックが必要な場合ですが、1のクラス、2のクラス、3のクラスというように
3つのクラスを作った方がいいですか?
それとも1つのクラスの中にまとめた方がいいですか?

個人的にはあんまりクラス数が増えるのもどうかな?と思ったりするんですが。

どうなんでしょうか?




>>940
規模や他の条件によっては3つでも1つでもありうると思うけど、
cohesionを考慮して1と3のクラスと2のクラスって構成もある。
ActionとBLを分けるという条件だけでは、判断できない。
今気付いたが http://club.nintendo.jp/ ってStrutsつかってんのな。見慣れたTOKENのhiddenタグがあった…
>>941
ありがとうございます。
参考にさていただきます。
>>936, >>938-939です。
ご返答をいただけません…。
私は、よっぽど間違ったことを書いてしまったのでしょうか?

確かに、マルチスレッド処理のことはあまり知らないのですが、
例えば、ActionFormBeanのすべてのsetter とgetterに synchronized を
付加しても、解決にはならないと思うのです。

どこかに、複数のスレッドから共有できるフラグを用意して、それによって
複数のスレッドを調停するしかないのかと私は思うのですが。
(それが要するにtokenなのですよね?)
945デフォルトの名無しさん:03/11/02 20:24
>>944
何言ってんのかさっぱりわからんが
スコープって知ってるよな?
例えばSessionスコープに登録されたオブジェクトは
そのセッションのユーザにしか見えない。
それを考えると、よっぽどおかしな処理しない限り
オブジェクトはスレッドセーフかどうかなんて考える必要ない

ただ、アプリケーションスコープにあるオブジェクトはユーザ全員が使える位置にあるから
今までどおりスレッド使ってプログラム組むしかない
まあ、面倒でなければそういうデータはデータベースに置いとけば問題ないが
>>944
「マルチスレッド」「スレッドセーフ」の意味から勉強し直してください。
今のあなたに説明するのは骨が折れすぎで気力が出ません。
申し訳ないけど。
>>946
まことに申し訳ありませんが、ではこれだけ教えていただけませんか?
本当に困っております。
回答は、YesかNoかで結構です。

(1) あるJSPページで、フォームを多重サブミットしてしまった場合、
(サブミットしてもなかなか反応が返ってこないので、ボタンを連打してしまった場合)
StrutsのActionFormBeanの、そのユーザに割り当てられたインスタンスの中で、
複数のスレッドが同時に動く場合がある。 Yes / No ?

(2) (前問が Yes の場合のみ、お答えください)
同一のJSPページからの多重サブミットされた
フォームの値が、回ごとに違っていたら、
(例えば、ラジオボタンなどをでたらめに押しなおして、再度サブミットされた場合)
あるスレッドが一連のgetterからフォームの値を取得している途中で、
別のスレッドがsetterを呼び出し、フォームの値を書き換える可能性がある。
Yes / No ?

どうかどなたか、これだけ教えていただけないでしょうか?
あとは自分で何とかいたしますので。
uzai
>>947
(1)y(2)y
>>949
ちょっと驚きました。
スレの流れから、(1)N か、(1)Y (2)N という答えを予想していたのだけれど。
tokenを勉強して、実装してみることにします。
ありがとうございました。
明日、モーターショウにいけるかどうかの瀬戸際です
お知恵を拝借したいのでつ。
1.tileを使っております。あるJSPで別のサイトに飛ばしたいのですが、
 フレーム風に(たとえばBodyだけ別サイト)というのは可能でしょうか?
2.iterateを使用して(<%= i%>を使うのでもいいのですが)たとえば、
 <html:text property=No[<%= i%>]">とか、可変の列で値をとりたい
 時にどんな感じでとればいいのでしょう。なんか、indexは使えないみたいですね。
952デフォルトの名無しさん:03/11/03 03:23
1.無理だと思う
2.contribに入っているStruts-ELタグかJSTLを使う
953951:03/11/03 03:35
ずっと張り付いていました。。。

>>952
あう・・・1.は無理でしか。
一応、フレームのJSPを作って、metaを使ってフレーム内で
読み込もうとしてみました。結果、残念賞。
2.はStruts-EL・・・これから調べてみます。
情報THXです。ただ、残念ながら、モタショーは・・・・・・。
>>951
仕事でなされているのですか?
なんで、同僚は教えてくれないのですか?
ていうか、ここで仕事でやってるっぽい人の質問あるけど
仕事でJavaやってる人ってその程度でも出来るんですかね?
それとも専門は他の言語でたまたまJavaやってるとか?
俺はプログラマになろうなんて思ったことないし、なりたいと思ったことないけど
俺でもできるんじゃないかと勘違いしそうだよ。まあ、コード書くだけの仕事じゃないだろうけど。
プログラマーの大半は、素人に毛が生えた程度です
>>951の人脈のなさにはすこし同情・・・
>>951
1. 可能
2. <html:text property='<%= "No[" + i + "]" %>' />
>>957
そもそも、951の質問が曖昧なわけだが、誤解を招く回答だ。

ある部分だけ別サイトのコンテンツを埋め込むのは可能なわけだが、
その部分だけをサブミット→再描画は不可能。

951はフレームのようにある部分だけをサブミット→再描画したいのか?
それとも、埋め込むこと自体が可能か不可能かを聞いているのか?
>>950
一部の香具師には、触れられて欲しくない話題だったんだな。
正しいのは君だから安心すれ。
960951:03/11/03 12:58
どうもです。私が人脈のない951です。
皆さんいろいろレスをありがとうございます。
>>954
私はプログラマーではないわけですが。
わけのわからないルートから降ってわいた謎の仕事です。
まぁ、能力的には下のほうなので、漏れを見て自信はつけないほうがよいかと。
>>957
2.のJSPに表示させるのは問題ないのでつが、値をFormで取得できないのでつ。
>>958
あいまいで申し訳ありません。たとえば、別のサーバの掲示板を持ってきて表示させたいのです。
フレームだと、mainで掲示板を表示して、操作させたりできるですよね。
そんな感じにしたかったのです。
>>959
ものすごく安心しました。
私はコミュニケーション能力が低く、情報交換においてお互いに満足が行かない
ことが多いのです。私のわかりにくい文章を理解していただいたようで、たいへん
ありがたいです。

Strutsのトークンは、ただこれを使いさえすれば安全、というものではないよう
ですね。かなり気を配って使わなければ、安全なWebアプリはできないように見え
ます。引き続き勉強します。

トークンに限らずStrutsは、よく理解しなければ危険なアプリケーションを
作ってしまう可能性が、かなり高いと思います。例えば以下の内容は、私は
恥ずかしながら最近まで知らず、たいへんショックを受けました。

http://janit.com/TechnoInf/Java/Struts1.1b3/userGuide/preface.html
(以下、引用)
リクエストとは違って、セッション属性上では、スレッドセーフであることに注意を
払う必要があります (メソッドはこれらの Beans が提供するものであり、セッション
自身の getAttribute() と setAttribute() メソッドではありません)。同じ
ユーザーから複数の同時的なリクエストがある、そのため、同じセッションに
アクセスするのは、驚くほど、よくあることです。
>>961
セッションの危険性は、Stutsに限った話ではありませんね。Strutsの危険性の
例示としては不適切でした。すみません。
あい、すいません。
<bean:message key="hoge.message" ⇒
arg0='<bean write name="hoge" property="hogehoge" />' />

みたいなネストってできないのでしょうか?
欝だ・・・
>>963
できない
>>963
内側をスクリプトレット<%= %>にするしかないしょ
>>961
問題意識あるだけ偉いと思う、たぶんなにも考えずつかうやつがほとんど..
あなたの心配事はsessionスコープのフォームでリクエストパラメータ受ける限りtoken
ではなにも解決しない,ソース追ってみればすぐ解る(RequestProcessor)なおRequestProcessorは
struts-config.xmlで置き換えできるので気に入らないところ適当にオーバーライドすれば?
つーかrequestスコープにすればすべて解決だと思うが、クリティカルなsession
オブジェクトはアクション内で自分でコントロールすればいい。
>>967
ありがとうございます。目からうろこが落ちました。

トークンについては、「これはfowardの制御には使えても、安全性の厳密な確保に
は使えないのか」と思いはじめたところでした。

しかし、sessionスコープのフォームについては予想外でした。何しろ、複数
ページにまたがるActionForm Beanは、jakartaの公式ドキュメントで推奨
されているのですから。
http://janit.com/TechnoInf/Java/Struts1.1b3/userGuide/building_model.html

私はこのデザインを完全に安全にする方法を、Strutsが提供しているはずだと
信じておりました。しかし、あくまでこれは、ノンクリティカルな用途にしか
適合しないデザインだったのでしょうか。

RequestProcessorをオーバーライドするのは不安なので、struts-config.xmlで
各ページ専用のフォームをrequestスコープに置くことにします。
従来の、ページをまたがったsessionスコープのフォームは、そのままセッション
スコープに置き、Action#execute()内でrequestスコープのフォームと、
データのやり取りをすることにします。

ページの表示には、従来どおり、sessionスコープのフォームが使えるかどうか、
試してみます。
name, scope の値は、struts-config.xmlと、<html:form> のそれぞれの場所で
独立して指定できるようですなので。
すみません、上の書き込みは >>966 さん宛です。

ところで、あつかましいお願いですが、Strutsの情報を入手するにはどうしたら
よいか、アドバイスをいただけないでしょうか?
例えばトークンの情報ですが、上に書かれたようなことは、国内のサイトでは
私は見つけることができませんでした。

・日本のサイト
・日本の書籍
・海外サイト
のお薦めがありましたら、どうかお教え願えないでしょうか?

ただ私の英語力は、jakartaの公式サイトすら読むのに悪戦苦闘するレベルで
まことに恥ずかしい限りです。

本来、会社の人間に聞くべきなのでしょうが、私は弱小ソフトハウスの新人
プログラマで、何のツテもありませんので、恥をしのんでお伺いします。
>>968
洋書で、Atruts in Actionという良書がある。
これの日本語訳&Struts1.1対応版が年内に出るとかでないとか・・・・
一番早いのはソースを読むことなのだけど、飛躍しすぎ?w
>>970
でもないんじゃない?Strutsのソースはそんなに複雑でもトリッキーでもなく、
むしろ読みやすい部類だと思うし。
>>969-971
http://www.amazon.co.jp/exec/obidos/ASIN/1930110502/ref%3Dlm%5Flb%5F8/250-4631646-2400200
http://d.hatena.ne.jp/kakutani/20030929
この本ですね。年内に出てくれると良いのですが。

あえて選択肢には書かなかったのですが、やはり情報源は、洋書とソースコードしか
決め手はないのですね。苦しいですが、覚悟を決めるしかなさそうです。
せめてDilbertのオチを理解できる程度にはならなければ。ソースもがんばって
読んでみます。

ありがとうございました。
>>969
新人でそこに気付くのはセンスがあると思う。

JavaServlet仕様には page 〜 application スコープまで定義してあるけど、
APサーバが複数個(複数プロセス、複数マシン)ある場合には、その他のスコープも存在する。
JVMスコープ、マシンスコープとでもいうべきものが。

たとえばロードバランサの後ろにAPサーバA,Bがあるとして、
Aにてsessionid を発行されたブラウザのリクエストが今後も A にルーティングされるとは限らない。
(ロードバランサの仕様などによる)

APサーバでクラスタリング対応しているものもあるが、
セッションを引き継げないものもある。

こうなってくると request スコープしか信頼できる領域はなくて、
session スコープに入れたいデータはすべて DB などの外部ストレージに格納する必要がある。
ここでも連続submitへの対応を考慮する必要がある。


まとめると、まあがんがれ。応援する
>>973
ありがとうございます。

ロードバランサの話は、このスレでは >>280-292 で出ていましたが、そこで
sessionを使えない理由がやっとわかりました。
この方はhiddenタグを使ったようですが、仕様上それが許されないことも多い
ですから、そういう時はサーバ側で外部ストレージに保存するしかなく、その
排他制御にも気を使わなければならないのですね。
クリティカルな案件は、本当にたいへんなのですね。
とても勉強になりました。

私は物分りが悪く、人に迷惑をかけることが多くて、とてもセンスがあるとは思え
ないのですが、お言葉を励みにがんばらせていただきます。
大学生ですが、strutsできることのアピールは、
就活でぷらすになりますか?
>>975
ならない。

俺ならStrutsが使えるよりも、
・人にものをわかりやすく説明できる
・人のいったことを的確に把握できる
こんな奴がほしい。頭のいい奴ならStrutsの使い方なんて
すぐに習得できる。会社に入る前に知っているかどうかなんて関係ない。
SJC-Pとかの資格と同じ。今資格があるかどうかよりも素質が重要。
>>975
>>976の書いているとおり、新卒に求めるのは
経験ではなくて、素質だと思います。

Strutsなんて、英語がそれなりに読めて、
コンピュータの使い方がそれなりに分かっていれば、
すぐに慣れるはず。
>>975
ならない。つーか、面接するような人はあんまりそっち方面は知らん場合がおおい。

でも、Strutsみたいなのを使えるってことは
技術的な好奇心が旺盛だっていうエピソードくらいにはなるから
「素質」とやらを証明する手立てになるかもしれん。
979デフォルトの名無しさん:03/11/05 20:17
>>俺ならStrutsが使えるよりも、
>>・人にものをわかりやすく説明できる
>>・人のいったことを的確に把握できる
ほとんどのプログラマは馬鹿か変態なので
そんなことはできません(w
980デフォルトの名無しさん:03/11/05 20:41
プラスになるに決まってんじゃん
Strutsが使えるって事は

>Strutsなんて、英語がそれなりに読めて、
>コンピュータの使い方がそれなりに分かっていれば、
>すぐに慣れるはず。

コレの逆も成り立つと思うが?
あとな、

>・人にものをわかりやすく説明できる
>・人のいったことを的確に把握できる

↑こういうものを見抜くために面接してるんだろうが?ボケかおまえ等?
どなたか次スレを立てていただけないでしょうか?
strutsが使える大学生。

苦労して覚えた香具師の癇にさわったっぽい
983デフォルトの名無しさん:03/11/06 14:20
Strutsなんて苦労して覚えたのはお前だけだろ?
>>980
プラスになるとしか思えてないきみに同情するよ。
就職活動するなかで出会う人たちのどれだけがStrutsなんてものを必要としてる?

派遣で働いてる人がWeb&Java(J2EE)ってところへ突っ込むのならプラスだろうが
通常の就職活動では無意味。

まあ、Struts使って人をうならせることしたって言うんなら話は別だけどね。
大学生ネタ、けっこう食いつきよかったな。藁
strutsしかいけないのか、sutrutsも!いけるのか・・・
987デフォルトの名無しさん:03/11/07 14:06
<table>
<%
java.util.List list = (java.util.List)session.getAttribute("list");
java.util.Map map;
String[] week = {"sunday","monday","tuesday","wednesday","thursday","friday","saturday" };

for (int i = 0; i < list.size(); i++) {
map = (java.util.HashMap) list.get(i);
%>
<tr>
<th><%= i + 1 %>週</th>
<%
for (int j = 0; j < map.size(); j++) {
TestForm form = (TestForm) map.get(week[j]);
%>
<th><%= form.getDay() %></th>
<%
}
%>
</tr>
<%
}
%>
</table>

これをStrutsタグまたはjstlで書くとどうなりますか?
988デフォルトの名無しさん:03/11/07 14:16
>>987
キャストの処理なんてどうやってやるんだろう?
989デフォルトの名無しさん:03/11/07 19:39
JSPの質問ですがいいですか?

JSPのスクリプトレット内(<% %>)内で
次のようにMessageResourcesを取得するにはどうしたらよいのでしょうか?
エラーがでます(T_T)
MessageResources resource = MessageResources.getMessageResources("hoge.ApplicationResources");
importし忘れとか
詳しいエラーをアップしる
9911 ◆lqgT6FBSpw :03/11/07 20:54
>>989
パスが通ったところにおいてないとか。
9921 ◆lqgT6FBSpw :03/11/07 20:55
>>988
不要
9931 ◆lqgT6FBSpw :03/11/07 21:10
>>987
<%@taglib prefix="c" uri="http://java.sun.com/jstl/core"%>
<table>
<%
String[] week = {"sunday","monday","tuesday","wednesday","thursday","friday","saturday" };
pageContext.setAttribute("w",week);
%>
<c:forEach items="${list}" var="i" varStatus="s">
<tr>
<th><c:out value="${s.count}"/>週</th>
<c:forEach items="${i}" varStatus="m">
<th><c:out value="${i[w[m.index]].day}/></th>
</c:forEach>
</tr>
</c:forEach>
</table>
9941 ◆lqgT6FBSpw :03/11/07 21:13
995デフォルトの名無しさん:03/11/07 22:52
記念カキコ v(^-^=)
996デフォルトの名無しさん:03/11/08 04:31
ぬがめそ
997デフォルトの名無しさん:03/11/08 04:31
ぬがめその時間ですよ!
998デフォルトの名無しさん:03/11/08 04:32
ぬがぬがっと,大成功!
999デフォルトの名無しさん:03/11/08 04:33
ぬがーっ!
ぬがめそーっ!
1000ぬがめそ:03/11/08 04:33
ぬがめそ
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。