フレームワークStrutsをいじくり倒す人の為のスレ
1 :
nobodyさん :
03/04/28 08:14 ID:Ub0n1fGR
∧_∧ パンパン / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ( ・3・) < ぼるじょあ兄妹がパンパンしながら2ゲットォー!! ( つ∋oノハヽo∈\_________________ ) ,ィ⌒( ・3・) (_(__人__,つ 、つ
故・ぼるじょあ
4げっと!
みきたんのおまんこげっと!
6 :
1 :03/04/28 18:43 ID:Ub0n1fGR
流行っていないことがわかりました・・・
オレの2ゲットが悪かったのかと反省してStrutsを入れてみた。 なるほど。最近やっとServletを使い始めたオレにはぴったりの勉強材料だ。
8 :
nobodyさん :03/04/28 20:47 ID:Pkujt7AF
ちょっと中途半端って感じかな。あんまりよくいじっていないけど。慣れるまで大変だし。
>>8 >慣れるまで大変だし。
そうでもないと思うぞ。やりはじめは確かに分かりにくいかも
しれないけど、1、2日で慣れたよ。
>ちょっと中途半端って感じかな。
仕様です。
>>9 おお、あんた、優秀な香具師なんだな、漏れ劣等生だから。ちと時間かかったのは確かす。
ASPに戻ろうかと思案中。
11 :
nobodyさん :03/04/28 23:37 ID:Ub0n1fGR
>>9 仕事で使っているけど、慣れるまで大変だよ。
Oracle とか IBM とかでも使っているよーなので、努力したいと思うのだが・・・
んな、無理に盛り上げんでも
13 :
nobodyさん :03/04/29 09:56 ID:6c9ghD2c
ActionFormに無理やり色々詰め込むと、融通がきくことがわかってきた。
既存の技術に無理矢理OOP的な考え方をくっつけたという感じのフレームワーク。なんで中途半端って感じも。それでもJSPとかでゴリゴリロジック書くよりはラクだけど。 JSPやServletなどを知らない人がこのフレームワークをさわるのは難しいかな〜。 つうかそんな融通の利くフレームワークなんて無いと思うけど。
15 :
nobodyさん :03/04/29 10:18 ID:AXvmxaz8
>既存の技術に無理矢理OOP的な考え方をくっつけた どこにそう感じるんだ? 「既存の技術」ってなんだ? Strutsでまともに組んだことなさそ・・・っつーより、よくわかってなさそ。
あぼーん
17 :
14 :03/04/29 10:39 ID:8VlbjSE8
>>15 うん、じつは使ったことないし、よくわかってないんだ(笑)ごめんぽ。
18 :
13 :03/04/29 10:59 ID:6c9ghD2c
ActionForm というフォームに対応するデータ・コンテナークラスと、 実際の処理を担当する Action、表示部分を担当する JSP、これらを統合 する struts-config.xml で構成されている。 ActionForm - Action の関係は割合と捉えやすい。データをロードし てから編集するときとかは、作業は楽だ。 しかし JSP のコーディングが厄介。あらかじめ用意されている専用 タグを使うのだが、普通に Java のコード書くほうが数段楽だし融通が きく。 デザイン面は客の要求が厳しいところだし、現在かなり鬱になって いる。
>>18 なんだ、専用タグをエディタでシコシコ書くの?じゃ、だめじゃん。もっとラクチンなやつはないのかね。ASP.NETとか。
20 :
13 :03/04/29 18:05 ID:6c9ghD2c
>>19 エディタで書けないもののほうが、あとあと困る気がするが。
専用タグが面倒なことは否定しないが、専用タグ使わないと MVC にならない。
>>20 確かにそーなんだろーけど、最初はツールで、あとで調整したい人はエディタでタグを、てなアプローチがいいんでは。最初からタグをエディタで書くというのは大変な労力じゃなかろうかと。そこらへんを便利にしてくれるツールはないの?
22 :
13 :03/04/29 19:55 ID:6c9ghD2c
>>21 ずっと最初からエディタで書いているから、ビジュアルな環境自体は不要なデベロッパーが多いと思われ。
それにデザイナーから出てきた HTML を書き換えていく事が多いから、便利ツールがあっても余り役に立たない気がするが?
もっとも、Struts はフレームワークであってツールで無いので、誰かがStruts 用ツールを書いてくれても問題ない。
23 :
nobodyさん :03/04/30 00:26 ID:7R70iZIR
>>21 IBMのWSADとかいうIDEがそのへんを面倒見てくれるはず。
あぼーん
25 :
13 :03/04/30 06:35 ID:/Snk6liy
Struts のタグの要素(例:onClick="")に動的な文字列を入れる場合、 onclick='return func(<%=Sample.getID()%>);' はだめだけど、 onclick='<%="return func(" + Sample.getID() + ");"%>);' は実行されるね。 デザインとコンテンツ分離していないな・・・しかし。
26 :
nobodyさん :03/04/30 10:55 ID:sH+8Jb43
>>25 >onclick='return func(<%=Sample.getID()%>);' はだめだけど、
なぜ動かないかが謎
27 :
13 :03/05/01 13:43 ID:1itvb5PA
>>26 Struts1.02 Tomcat4.06 J2SE1.41_02 での動作。
単に Struts タグのパースが甘いのではないかと思われ。
29 :
13 :03/05/02 04:03 ID:CDnP+fh3
あぼーん
31 :
nobodyさん :03/05/02 11:45 ID:U4GCg6UJ
4月からStruts勉強し始めました。 DBの抽象化、フォーム項目検査の共通化は似たようなことを自分でやっていたので、見つけたときはちょっと欝入りました(^^; っつーことで、「フォームから送信された時にアクションBeanをマップして〜」というのは結構サンプルがWebや本にもある のですが、他のWebなんかからクエリー文字列で送られてきたパラメータの解釈なんてーのはどうやるのでしょう? これは多分どこかに答えがあると思うのですが、検索できませんでした(T_T) 多分、受け取るだけならbean:parameter でいいんでしょうが、その後のValidatチェックとかはどうすれば? というコトです。 やっぱり、Bean作ってプロパティに入れて、チェックは自分でシコシコと、なんでしょうか? 出来ればValidatorを使いたいの ですが……。 あと、logic:iterate で、抽出条件などの初期値をbeanに指定するにはどうすればいいのでしょうか? ワタシ的には コレクションを含むBeanを定義。プロパティに抽出条件、抽出実行メソッドを定義 ↓ JSP内でBean作成。プロパティに抽出条件をセット ↓ JSP内で抽出実行メソッドを実行 ↓ logic:iterate にBeanとコレクションを設定。 ……で、いいかなぁ、と思っているのですが「JSP内にスクリプト書いちゃっていいのかなぁ? それともタグライブラリで 出来るのか?」と思い、まだ試していません。多分、これもどこかに答えがある(絶対みんな使うはずだ(^^;))と思うのですが、 これもまだ検索できていません。 以上、「このページを見ろ!」だけでも教えていただけると助かります。よろしくお願いします。
32 :
nobodyさん :03/05/02 13:04 ID:NXr20aw7
>>31 Struts使うんなら基本的にJSPには直接アクセスさせないで、必ずActionを経由
するようにしないと、あちこち破綻しまっせ。
33 :
31 :03/05/02 13:21 ID:U4GCg6UJ
>>32 >Struts使うんなら基本的にJSPには直接アクセスさせないで、必ずActionを経由
>するようにしないと、あちこち破綻しまっせ。
他のWebや本でもそう書いてありますね。ということはやはりbeanタグを使うのでしょうか?
そのあたり、どこかに書いてないモノでしょうかねぇ( ´∀`)
※探してるけどやっぱり検索できない(T_T)
34 :
nobodyさん :03/05/02 13:55 ID:L5fY5Do4
なんか言ってることがトンチンカンなんだが、ちゃんと勉強してる? ちなみにバージョンは?
35 :
31 :03/05/02 14:41 ID:U4GCg6UJ
>>34 すみません。多分「ちゃんと」は勉強してません。本とWebの拾い読みです(拝)
バージョンは1.1を使おうと思っています。
36 :
nobodyさん :03/05/02 15:53 ID:L5fY5Do4
1.1なら、xmlだね。
37 :
31 :03/05/02 16:21 ID:U4GCg6UJ
あぼーん
39 :
nobodyさん :03/05/02 23:45 ID:CDnP+fh3
>>31 GETのオプションも ActionForm の中に入ると思った。
Action に飛ばすのが推奨だけど。
あぼーん
41 :
31 :03/05/03 03:10 ID:4TfEEb3W
>>39 えと、ごめんなさい。誤解があればご指摘を。
……それは、「hogehoge.do?hanya=1」という風にURLで呼び出す、ということでしょうか?
で、表示に必要な情報はBeanに入れてセッションで保持して次のページで表示、ということでしょうか?
うーん、自分で書いてて、何かが違うような気がする……
42 :
nobodyさん :03/05/03 16:02 ID:t0/6rwZ0
>>41 ActionForm からは Action を必ず呼び出すのが推奨だが、
リンクさせたいだけなら、<%= %> とコードをかいても、
<html:link> タグを使ってもいい。
43 :
nobodyさん :03/05/04 01:07 ID:M8Vf8h8D
>>42 ActionForm から Action を呼び出すって...
もうすこしわかってから人に教えようよ...
44 :
nobodyさん :03/05/04 02:08 ID:tPLquQaP
>>43 ActionFormと結び付けられていないJSPから、Actionを呼び出すの?(笑)
45 :
nobodyさん :03/05/04 02:46 ID:M8Vf8h8D
>>44 42の人ですか? 本格的にわかってないのかな...
・ActionForm と Action には呼び出し関係はありません
・ActionForm は Action の引数として渡されます
・ActionForm にリクエストパラメータを設定して
Action を呼び出すのは ActionServlet です
46 :
nobodyさん :03/05/04 03:49 ID:tPLquQaP
>>45 Strutsいじったこと無いのかな...
47 :
nobodyさん :03/05/04 03:55 ID:tPLquQaP
>>46 とはいいつつ、意図の補足。
>>41 の話をきいていると、JSP ファイル間でリンクを貼りたいと
いいたいように見えるが、Struts では Struts に従った JSP ファ
イル(ActionForm と関連付けられたフォームを持つ)からは、
Action での処理に移るのが推奨になっている。
だから struts-config.xml で ActionForm を連携している JSP
ファイルからは、他の JSP ファイルに直接リンクを貼るのは望ま
しくないと書いた。
> Action を呼び出すのは ActionServlet です
これ自体は間違っていないが、ActionServlet を自分で書かないよな?
48 :
31 :03/05/04 13:46 ID:p4vaAgcq
>>47 >>41 の話をきいていると、JSP ファイル間でリンクを貼りたいと
>いいたいように見えるが、Struts では Struts に従った JSP ファ
>イル(ActionForm と関連付けられたフォームを持つ)からは、
>Action での処理に移るのが推奨になっている。
大体あってます。が、「JSP同士」では無く(まぁそういうこともあるでしょうが)
1.他のサイトからリンクされてる
2.スタティックなHTMLからリンクしたい
3.ビュー側で初期値を与えたい
4.その他、「諸般の事情」でどうしても初手はGETでしかリクエストできない
ようなとき、抽出条件その他の初期値を与えたい場合、どのように処理をすればいいのか、ということです。
>>41 では、抽出結果をいちいちセッションで保持するのはメモリの無駄のように思えましたが、考えて見れば
ビュー側で表示が終わったら明示的に消去すればいいんですよね? だからやっぱり
>>41 で書いたように
hogehoge.do?hanya=1でGETでリクエスト
↓
Actionクラスで条件をValidatしビジネスロジックを実行
↓
抽出結果をBeanに格納しセッションで保持
↓
ビュー側でBeanの内容を表示
↓
表示し終わったら、セッションの内容を明示的に破棄(Nullを入れる)
というストーリーでいいのかな、と思いましたが、これだと3.が実現できないんですよね。
どうでしょう、こういうことをした人はいます?(^^;
49 :
nobodyさん :03/05/04 18:56 ID:tPLquQaP
>>48 >ビュー側で初期値を与えたい
ActionForm に初期値をセットすればいいのだと思われ。
外部から直接、〜.do にアクセスが飛んだ場合でも ActionForm の
インスタンスは作成される。
コンストラクタか、初期値でモゴモゴっと処理してしまえばよい。
※ ただし推奨方法なのかは謎
あぼーん
あぼーん
52 :
31 :03/05/04 23:36 ID:p4vaAgcq
>>49 そうか、基本のActionFormは作っておいて、おっしゃるとおりコンストラクタか、初期値を設定するメソッド
(まぁ、グローバルなプロパティでもいいんでしょうが)をオーバーライドして、ビューの数だけ継承しながら
作っていけばいいんですね?
出来ればビューだけで解決したかった(HTMLデザイナーに微調整は全部やらせたかった(^^;))のですが、
考えて見れば(MVCの概念では)抽出条件とかってビューには含まれませんものね。
了解しました。この考え方でプロトタイプを作って見ます。アドバイスありがとうございました(拝)
53 :
nobodyさん :03/05/05 12:27 ID:JAcSDFlc
ハゲシク使い物にならない、MVCにもなってないプロトが出来上がりそうだな。 それを使わされる下の人間いるの?なんか可哀想だな(ゲラ
あぼーん
55 :
31 :03/05/05 21:29 ID:fyscN38j
>>53 申し訳ありませんが、問題点があれば具体的にご指摘いただければ助かります。
是非ともよろしくお願いします。
技術評論社が出した「Jakarta Project徹底攻略」を よんでstrutsの使い方を把握し実際に動かすことに成功したが あの本を読んでいる限りは、struts-config.xmlファイルの設定が面倒くさそう。 Beanを追加すればするほど肥大化はいやなもんじゃ。 JavaServerFacesに期待しているのだがどうなのだろうか?
57 :
nobodyさん :03/05/05 23:07 ID:TDsoNdrN
53ではありませんが。
>>55 もう解決したようですが「Viewで初期値を与える」という発想が
間違いのもとです。
それと
>>52 で書かれていることも意図が掴めません。
普通に作っていけばActionとActionFormのサブクラスが機能の
数だけ作られて、それで何も混乱の元は無いように思うのですが。
あぼーん
59 :
nobodyさん :03/05/05 23:13 ID:TDsoNdrN
60 :
nobodyさん :03/05/05 23:22 ID:TDsoNdrN
あぼーん
62 :
31 :03/05/06 00:51 ID:OVvSof92
>>57 そうですね。ちょっと整理しましょう。今回解決すべき問題点は二つでした。
(1)システムが動くサーバの外から、抽出条件のパラメータが付いたGETリクエストが飛んでくる。
(2)デザイン的に、ビュー毎に.表示する情報の抽出条件を変化させる必要がある。
で、解決方法として
(1)については、URLを「hogehoge.do?hnya=1」等と記述してもらうことでアクションサーブレットを起動し、あとは通常のStrutsの処理フローに乗せる。
(2)については(MVCの考え方で行けば)抽出条件というのはビューに含んではいけない。たとえビューと一対一で対応するとしても、それぞれに
抽出条件などを設定したコントローラ(=アクションクラス)を用意すべきである。
と理解した。ということです。
>>31 そもそも解決すべき問題点は、おまえさんの「日本語能力」にあると思うのは漏れだけだろうか。
内容意味不明だし、一体何が知りたくてココに書いてんだ?って感じ。
おまけにStrutsのドキュメント、まともに(全く)読んでない(読めない)感すらある。
64 :
nobodyさん :03/05/06 07:24 ID:M26ZMqzh
>>62 裏技?として ActionForm 内にクエリーを書いてしまう方法もある。
GETパラメーターを格納(setXXX)したあとに、JSP内部でプロパティーを
参照(getXXX)するので、条件にあった表示が得られる。
65 :
57 :03/05/06 12:48 ID:6G0ArJzR
>>62 だいぶわかりやすくなりました。
今回は書かれている方法でもよさそうな感じですが、一点だけ、
>(2)デザイン的に、ビュー毎に.表示する情報の抽出条件を変化させる必要がある。
この要件がいまいち不可解だったのでした。
抽出条件によってデザインが変わってくるのであれば、それは
別のビューとして(複数のJSPに分けるなどして)実装して、Action
の戻り値を返ることで適切なビューを表示するようにすれば良いし、
デザインは変わらないけど表示すべき情報が可変であるということ
であれば、アクションクラス内で取得した情報を<logic:*>や<bean:*>
タグで好きなように表示すればいいわけですから。
要は、
「JSPに抽出条件を持ってもそれを使用する局面が無い」
イコール
「JSPに抽出条件は含めないほうがいい」
という感じで。
66 :
nobodyさん :03/05/06 23:32 ID:mn6KLLDy
1.1の正式版ってel対応になるのかな・・・? あれってservlet APIの2.4からだよね。 ところでMastering Jakarta Strutsって本読んだ? あれは酷い。1.0のソースを無理やり1.1にしただけ。 tilesとかvalidatorとかの説明ぜんぜんなし。。。 金返せー
67 :
31 :03/05/07 15:29 ID:YS2KuJ4n
>>65 フォロー、ありがとうございました。この方向でちょっとプロトタイプを作って見ます。
アドバイスどもでした(拝)
>>66 漏れもMatering Jakarta Struts買ったっす。
1.1Beta3 ベースということで期待してしまったが裏切られた…。
まあ、1.0の情報にしても、漏れの手元には雑誌とかWebとか断片
的なものばかりだったので、まとまった本をゲトしたというだけで満
足しようかなて感じ。
やはりValidatorやTilesの総括的な説明とか、リファレンス的な資料
は是非欲しい今日この頃。
69 :
43 :03/05/08 01:03 ID:QIbU8bsc
>>42 , 44, 46, 47
亀レスだけどさ。やっと意味がわかったよ。
あんたが42でいってるActionFormってのはJSPのフォームのことね。
そりゃ用語の使い方間違ってるだろ。
言語能力低い奴と議論するのは疲れるな。
何言っているか分からない香具師多いな。。 無理して用語を使わなくていいからしっかり自分の言葉で 丁寧に書いておくれ、読んでて疲れるから。
Tiles で putList を使おうと思ってるんだけど、 Cannot find bean putListName in any scope' って表示されてうまく動きません、、。 tiles-def.xml では正しく定義していると思います。 どこか気をつけないといけない点とかあれば、 教えてください。
72 :
nobodyさん :03/05/11 16:18 ID:RN6cVwq4
期待アゲ
ナニを期待しとるんだろ・・・と(ry
>>66 &
>>68 仕事で急にサーバサイドJavaをやることになったんでその本を買って勉強してたんだけど、泣いた…。
Javaは基本的な文法ぐらいしか知らなかったのに、納期の都合とはいえいきなりこの本を読むのも問題だが。
Actionクラスのオーバライドで4章ではきちんとexecute()メソッド使ってるのに、7章でいきなりperform()メソッドだもんなぁ(汗
わけわかめ状態だった。
75 :
nobodyさん :03/05/13 20:11 ID:HYZm7KE1
質問です。 <html:text />などでActionFormの内容を表示する場合に 出力文字に&などが入っていると、&などに置換されてしまいます。 <bean:write />の場合には filter="false"などでフィルター処理を無効にできるので、 上記と同じ状態を回避できるのですが、 html:text や html:textarea タグなどの場合には、 文字としての&を出力できないのでしょうか? どなたか方法を知っていたら教えてください。
76 :
75 :03/05/13 20:13 ID:???
修正です。 <html:text />などでActionFormの内容を表示する場合に 出力文字に&などが入っていると、&amp;などに置換されてしまいます。 ^^^^^
>>53 なんか本当に恥ずかしい意見だな…
Strutsモデルだと、いやでもMVCになるだろよ。
ろくに調べもせずに物言うのはイクナイぞ。
>>76 受け取り側で置換された文字列を戻すのはいかんの?
ちなみに入力系でエスケーフはずすと ひろみちゅ あたりに
ネチネチ指摘されちゃうよ。
78 :
77 :03/05/14 02:18 ID:???
>>53 あ、ごめん31の作るシステムがって事ね。
ワタクシも同意見です。
79 :
76 :03/05/14 16:33 ID:???
>77 レスサンクスです。 詳細書きますと、AirH"Phone でtextarea内を編集する時に textarea内のテキストの改行が CR+LFだとうまく改行として認識してくれないのです。 (&#13;&#10;)だと改行として認識してくれるので 直接(&#13;&#10;)を出力したいのですが、 Strutsの <text:textarea> タグで出力すると以前書いたように &が&amp;に変換されてしまうので困っています。 無理やりここだけStrutsから外れて処理するのも ActionFormの恩恵(validate等)が受けれなくなってしまうので いやだな〜と思っている次第です。 分かりにくい文章だとは思いますが、 またどなたか解決策や情報ありましたらよろしくお願いします。
80 :
初心者 :03/05/16 01:20 ID:P4wQZ3na
>>76 <html:text filter="false" .....
みたいなのってなかったっけ?
81 :
77 :03/05/16 02:31 ID:???
>>79 今ソースを追ってみたけど普通にfilter書けちゃってるねみたいだね。
どうせなら html.TextareaTag を拡張すれば?
属性を一つ追加して、doStartTag内の以下の記述に分岐処理
加えるとか。
results.append(">");
if (value != null) {
results.append(ResponseUtils.filter(value));
↓
results.append(">");
if (value != null) {
if (filter == true){
results.append(ResponseUtils.filter(value));
}else{
//今回変更したい処理
results.append(changedValue);
}
もし急ぎだったら、カスタムタグで逃げたほうが早いよ。(たぶん)
82 :
nobodyさん :03/05/16 03:56 ID:+YvWQ3K9
Strutsいいねー。Strutsの本を読んでいると デザインパターンの勉強にもなるし(特にModel部分)。
あぼーん
>>80 私も当然あると思ったんですけど、無いんですよね〜。
>>81 おー。やはりそうでしたか。しかもサンプルまで書いて頂いて。
ソース手元に無かったので覗いていませんでした。報告助かります。
今、対象となる部分は後回しにしていますので、
すぐにではありませんが余力が出来次第、対応したいと思います。
ありがとうございました。(・∀・)
でも、なんでそんな実装してるんだろ、、。
個人的には、改善して欲しいな。( ´・ω・`)
85 :
84 :03/05/16 05:39 ID:???
86 :
nobodyさん :03/05/16 17:08 ID:teI9CzVh
エラーチェックがうまく行かないです。 WEB-INFの下に以下の内容のApplicationResources.propertiesを置いて、 ---- errors.footer=</font> errors.header=<font color="red"> errors.input={0} 入力エラー ---- ActionFormのValidateでエラーチェックをしているのですが、 ブラウザで見ると、 null null と表示されます。 これはなぜでしょうか?
87 :
nobodyさん :03/05/16 17:09 ID:teI9CzVh
86です。 書き間違えました。 WEB-INFの下ではなくて、 WEB-INF\classesの下です。 ちなみに、Strutsは1.0.2です。
あぼーん
あぼーん
90 :
nobodyさん :03/05/16 18:57 ID:X/k6KzQW
日本語処理は filter 使うのがエレガントだと思うが、みんな 〜 と−の処理ってどうしている? Beans内部で Cp932 と JIS マッピングの変換処理するのは反則か?
>>86 Validate以前に <bean:message key="hogehoge" /> とかで表示はでる?
92 :
nobodyさん :03/05/17 17:27 ID:z/6/8Lae
>91 あー。出ないですねぇ... ApplicationResources.propertiesが見つけられていないのか? 何でかなー。 WEB-INF\classes下に置けばいいんですよね?
93 :
91 :03/05/17 20:03 ID:???
>>92 struts-config.xml に以下の記述はありますか?
<message-resources parameter="ApplicationResources"/>
(プロパティーファイル名が、ApplicationResources.properties で classes 直下の場合)
最初から、これを聞いておけばよかった、、。
94 :
nobodyさん :03/05/17 21:42 ID:gyiwxN9i
>90 Windows31Jから他のエンコーディングにするときにマッピングしてます。 (JavaMailする時とか、ファイルに出力するときとか) jspもservletもWindows31Jに統一しておけば、それほど問題無し。 データベースはutf-8。
95 :
92 :03/05/17 23:17 ID:O2nhd5ot
>93 あります。 あっても、なくても変わらないんですよ。 ちなみに、ApplicationResources.properties では、 ----- errors.footer=<HR></font> errors.header=<HR><font color="red"><h3>\u5165\u529B\u30A8\u30E9\u30FC</h3> errors.required={0}\u3092\u6b63\u3057\u304f\u5165\u529b\u3057\u3066\u304f\u3060\u3055\u3044\u3002 errors.selected={0}\u3092\u9078\u629e\u3057\u3066\u304f\u3060\u3055\u3044\u3002 ----- と設定し、JSPで、 <bean:message key="errors.required" /> とやっています。 あー。分からないー
あぼーん
97 :
93 :03/05/18 00:03 ID:???
>>95 <bean:message key="errors.required" />
で、nullが表示されるんですか?
Missing message for key errors.required'
とか画面にエラーで出力されませんか?
<%@ taglib uri="/tags/struts-bean" prefix="bean" %>
などの宣言が無くて、
<bean:message key="errors.required" />
とそのままタグのまま出力されてるとかってことはないですよね?
リソースが見つからない場合はエラーがでると思うんですけど、
それも出ないんですよね?
一度、同じ環境で、
struts-blank.war で動くかやってみてはいかがでしょうか?
resouece を表示するところまでのサンプルにはなると思います。
参考にならずにすいません。( ´・ω・`)ショボーン
98 :
92 :03/05/18 10:14 ID:RgYrYgHP
>97 >Missing message for key errors.required' が出ます。 taglibの宣言は入っています。 説明がまずかったようですね。 このメッセージが出るときは、リソースが見つかっていないんですよね? struts-blank.warを動かしてみます。 いろいろアドバイスありがとうございます。
99 :
92 :03/05/18 10:49 ID:RerIJFH5
struts-blank.warは動きました。 リソースも読み込めます。(文字を変えて試しました) 自分の作ったものと違うのは、Eclipseを使って試しているので、 自分で作ったソースは、 eclipse\workspace\xxxx\WEB-INF\classesなどにあるということ。 tomcatの配下にないとだめなんですかねぇ... 何が、いけないんだろ?
100 :
97 :03/05/18 10:59 ID:???
>>98-99 struts-blank.war は動いたようでよかったです。
(それすら認識されなかったらどうしようかと思っていました。)
私も Eclipse 使っていますが、 Tomcat以下ではありませんがきちんと認識しますよ。
struts-blank の環境を Eclipse に放り込めば多分認識されると思います。
おそらくどこかの宣言がおかしいか足りない等だと思いますが、
このまま struts-blank をベースに開発していった方が楽かもしれませんね。
それでは頑張ってください。
101 :
92 :03/05/18 11:07 ID:Rl7PkOHS
>100 97さん、お付き合いいただき、ありがとうございます。 分かりました。ログを見て気づいたのですが、 web.xmlの <!-- Action Servlet Configuration --> が、 <param-value>org.apache.struts.webapp.example.ApplicationResources</param-value> となっていたので、 <param-value>ApplicationResources</param-value> と変えました。 これを行ったら、きちんと表示できるようになりました。 validateもOKでした。 ありがとうございます。 これって、もしかして常識ですか? だとしたら、勉強不足です。申し訳ないです(;_;)。
あぼーん
103 :
100 :03/05/18 11:49 ID:???
>101 私も知りませんでした。 というより struts1.1 しか触ってないので 1.0.2 は全く知りませんでした。 今、 jakarta-struts-1.1-rc1 と jakarta-struts-1.0.2 の struts-blank.war 内の web.xml を見てみたのですが、 確かに init-param 要素に application がありますね。 ちなみに 1.1 の struts-blank.war の web.xml ではなくなっています。 試してみたところ、1.1でも同じように認識はします。 web.xml での宣言の方が優先されるようなので おそらく、1.0.1でも、web.xml ではなく、struts-config.xml でのみ定義すれば うまく動くのではないでしょうか? 今後はそちらが推奨なのかな、、、?( ´・ω・`) ちなみにドキュメントなどはきちんと読んでませんので違う部分があればご容赦ください。
常識以前の問題。 Struts以前に、Servletそのもの、全く理解していないだろ? レベル低過ぎで議論の余地無し。
105 :
nobodyさん :03/05/19 01:03 ID:wtvJuzDV
>>104 何をオマエが言いたいのかわからん
自分は分かってるよんってアピールかな?
優しく教えてやればいいじゃん、そんな書き込みするくらいなら。
まあ、俺は面倒くさいから書かないがな(ワラ
※それでも、煽るだけの奴よりはマシだね
<param-value>org.apache.struts.webapp.example.ApplicationResources</param-value>
↑一応Strutsの話だから、問題でもないべ
>>105 もうちょっと勉強してから書けってことだろ?
って、オマエもわかってなさげだな(w
108 :
山崎渉 :03/05/22 02:00 ID:???
━―━―━―━―━―━―━―━―━[JR山崎駅(^^)]━―━―━―━―━―━―━―━―━―
109 :
nobodyさん :03/05/22 19:24 ID:+fKyQ+WM
TagLibを使っています。 ビットマップを表示したいのですが、表示するビットマップ名自体は、 Beanのプロパティとして設定されています。 この場合、 <html:img...はどのように記述すべきでしょうか? いろいろやっていたのですが、すべて実行時にエラーになってしまいます。 例えば、無理やり <html:img src=<bean:write name="XXX" property="img"/> border="0" /> のようにしてみましたが、できませんでした。 どうするのが一般的でしょうか?
defineタグ
111 :
109 :03/05/23 08:58 ID:z66Oyt3O
>110 defineタグで、どうやるのでしょう? もちろん、Beanはdefineしてあります。 教えて君で申し訳ないですが、お願いします。
112 :
nobodyさん :03/05/23 14:09 ID:YPcGLQF2
> 111 taglibの入れ子ができないので、一度変数に格納するってこと。 taglibではdefineでできまぷ
113 :
109 :03/05/23 17:11 ID:???
>112 ありがとうございます。 できました。 そういうことだったのですね。
114 :
nobodyさん :03/05/23 18:40 ID:hBMC8P4e
JSTLとStruts-ELタグを使えば、 <c:set value="src"><bean:write name="bean" property="prop"/></c:set> <html-el:img src="${src}"/> みたいに出来る気がします。
あぼーん
116 :
山崎渉 :03/05/28 17:07 ID:???
∧_∧ ピュ.ー ( ^^ ) <これからも僕を応援して下さいね(^^)。 =〔~∪ ̄ ̄〕 = ◎――◎ 山崎渉
117 :
nobodyさん :03/06/03 16:19 ID:L+5xX/pq
これから実際に動かして確認しますが(現在すぐには使えないのです(拝))、 struts-config.xmlの<action-mappings>、pathとtypeは別個のものなんですよね? 何がしたいかというと、「GETメソッドでアクセスしたときに、まったく同じロジックで JSPだけ違うモノを使いたい」という時に、以下のようなstruts-config.xmlを書けば OKか? ということです。 <action-mappings> <action path="/hogehoge_moner" type="hogehoge" name="hogehogeForm"> <forward name="success" path="/moner.jsp" /> </action> </action-mappings> <action-mappings> <action path="/hogehoge_gikoneko" type="hogehoge" name="hogehogeForm"> <forward name="success" path="/gikoneko.jsp" /> </action> </action-mappings> で、「hogehoge_moner.do?param=ABC」でmoner.jspにリダイレクトし、「hogehoge_gikoneko.do?param=ABC」 でgikoneko.jspにリダイレクト、hogehogeFormでエラーなどがあったら共通のエラー処理を行い、正しかったら ロジックも同じ結果が返ってくる、ということでいいんですよね? (もちろん、同じロジックが使えるように双方のJSPを記述するのは大前提ですが)
>>117 やりたいことは可能。だがその記述じゃうまく動かない。
1. <action-mappings> はstruts-config.xmlに2つ書けないので、こうする。
<action-mappings>
<action path="/hogehoge_moner" type="hogehoge" name="hogehogeForm">
<forward name="success" path="/moner.jsp" />
</action>
<action path="/hogehoge_gikoneko" type="hogehoge" name="hogehogeForm">
<forward name="success" path="/gikoneko.jsp" />
</action>
</action-mappings>
2. フォワードじゃなくてリダイレクトしたいのならredirect="true"にする
<forward name="success" path="/moner.jsp" redirect="true" />
<forward name="success" path="/gikoneko.jsp" redirect="true" />
3. ActionFormでvalidateを行うのならinput属性を書くべし。
119 :
117 :03/06/03 23:15 ID:L+5xX/pq
>>118 ありがとうございました。早速試してみます。
>2. フォワードじゃなくてリダイレクトしたいのならredirect="true"にする
そうか、二つは違うんですよね。JSP(Strutsでない)でハマったのを思いだしました。
>3. ActionFormでvalidateを行うのならinput属性を書くべし。
あい、気をつけます(拝)
あぼーん
121 :
nobodyさん :03/06/05 11:59 ID:hOMijE8l
てめーら、セッション切れの処理って、どうしていますか?
あぼーん
>>121 javax.servlet.http.HttpSessionListener 使うとか?
124 :
nobodyさん :03/06/22 00:10 ID:dgrg4nwi
質問なんですが、Strutsでログインページを作る際、ID/Passが違っていたら IDの入力ボックス(html:text)にユーザが入力したIDを再表示させたいのですが、 どのように実装すればよいのでしょうか。 ActionFormには値が入ってるのですが。
>>124 ・IDを入力するテキストボックスにvalue属性を設定しない
・ActionFormのresetメソッド内で値を初期化しない(なにもしない)
・ログインページ再表示がredirectで遷移する場合はActionFormのスコープをsessionにする
上記の点を満たしていれば普通に再表示されると思うが?
あぼーん
29 June 2003 - Struts 1.1 Final Released
128 :
nobodyさん :03/07/02 03:25 ID:HpdeM5Co
ActionFormじゃなくてActionで項目チェックして、エラーを返す場合は?
129 :
128 :03/07/02 04:42 ID:HpdeM5Co
自己レス ActionErrors errs = new ActionErrors(); errs.add(ActionErrors.GLOBAL_ERROR, new ActionError("errors.giko")); saveErrors(req, errs); return map.getInputForward();
あぼーん
131 :
nobodyさん :03/07/02 13:23 ID:HpdeM5Co
ここにいる人達はスペシャリストの匂いがします。 ぼくは単に流行ものに手を出している程度で何がよくて、何が悪いか全然わかりません。
132 :
nobodyさん :03/07/02 17:14 ID:HpdeM5Co
iPlanetと相性悪いね..
133 :
nobodyさん :03/07/02 17:42 ID:9VBD/WRO
ブラクラ注意
>>132 Apache Project だしね。
って、何故にあいぷら?
136 :
nobodyさん :03/07/03 21:48 ID:qMkTj/89
>>135 本番環境がiPlanetなんです。
なぜと言われても、、、
137 :
nobodyさん :03/07/04 05:56 ID:nf207VCo
iPlanet6では1.1は動かないみたい。bugレポートで調べたよ。 org.apache.struts.util.PropertyMessageResources.javaの一行を消せば動く。 てかこのぐらい本家で修正してよ。
あぼーん
ブラクラ注意
140 :
nobodyさん :03/07/06 01:26 ID:JXtSLR70
携帯コンテンツ制作でstrutsを導入するんだが、 意味が無いように感じている。 アンカークリックによる検索中心でユーザーからの入力が ほとんど無く、ページ遷移も決まりきっているので、JSP でちゃちゃっと作ればいいと思うんだが・・・。
>>140 考えられるメリットは
・実パスと論理パスの分離(actionやglobal-forwardの利用)
・例外処理のフレームワーク
・URL Rewritingによるセッション管理がデフォルト装備
・Transaction Tokenが使える
ValidatorやDynaActionFormの恩恵は少ないのかもしれないが
それでもメリットはあるように俺は感じる。
142 :
140 :03/07/06 14:53 ID:BJuXMekw
>>141 レスありがとう。
俺含めてチームはstrutsが初めてで、今勉強している最中。
翔泳社マスタリング Jakarta Strutsのレベルなので、まだまだ
知識不足のようです。
この本中途半端であまり良くないっすね。141に書いてあるもので
書いてない事項多し。オライリーの馬本はどうなんでしょう?
ところで、トルクを使ってる人いますか?
翔泳社マスタリング Jakarta Strutsは内容的にはほぼ1.0.2だからな。 1.1で追加された機能についてはほとんど書かれていない。
>>142 トルク使いはじめた。
仕事で急に同僚が『データベース回りはトルクで固めましょう!』と
意気揚々と推薦したから何だけどね。
145 :
nobodyさん :03/07/07 12:04 ID:bM5NoCfp
人様にお金を貰って納品するシステム、 他人様が自社ビジネスのためにお金を出して導入するシステムに Torque はまだ怖くて使えない。。。少なくとも俺は。。。 責任持てんよ。。。
147 :
nobodyさん :03/07/07 13:06 ID:agSF/RdO
人柱がいるからこそオープンソースは栄える。 みんな、どんどん試してくれ(w
148 :
nobodyさん :03/07/07 13:26 ID:1L6FwMlP
「1000」みたいな数字を「1,000」と表示してくれるJSPタグ無いかな?
>>148 DecimalFormatとか使って自分で作ったらどうよ?
ストラトス(って読むんだよな?)ってどんなこと出来るんですか?
>>150 すとらっつだよ。
Webアプリケーションの設計、実装工数を短縮化できる(といわれている)
へー、じゃあ趣味でやってる俺にはあんまり向かないかもなー (読みの訂正サンQ)
趣味だと設計が不要なのか? 実装が楽にならなくてもいいのか? ていうか、趣味だったらWebアプリ作る必要がないってことか?
>>153 いや、まだ色々試してみたいことがあるから(Javaで)
標準クラス以外は自分でこしらえてみる、ってことです
>>154 そういう目的なら、なおさら使ってみることをおすすめする。
他人の設計を参考にするのはとてもいい勉強になるよ。
オープンソースだからソースコードが手にはいるからね。
ありがd 参考になったぜよ
157 :
nobodyさん :03/07/07 16:42 ID:SauQoyH6
apacheとtomcatを連携させたけど strutsはポート80で動いてくれません。 なぜ? なにか設定がいるのですか?
あぼーん
ステータスっておもしろの?
>>157 何をどう設定して、「動いてくれません」とはどのように動かないのか?
漠然としすぎで誰も答えられない予感
>>160 予感・・・でなくて、実際誰も答えられんわなw
162 :
nobodyさん :03/07/08 00:56 ID:I0Aop1sc
>>157 Struts以前の問題のような。mod_jkとか導入しよう。
163 :
144 :03/07/08 02:24 ID:???
えぇ、以前トルクで開発を進めていますが、周りの人たちも 内心気付きはじめたようです。 『やべ、トルクを使いこなすまでの過程を工数に入れてない…』 ハッキリ言ってこんなプロジェクトはいやです。 ただ、トルク自体はちゃんとやれば面白そうかも。。 まずはお遊びでいろいろ弄ってみたかった。 ちなみにトルクを推薦した同僚は、現在誰よりも テンパっております。(ケケケ
164 :
144 :03/07/08 02:24 ID:???
以前 >> 依然
>>163 >ハッキリ言ってこんなプロジェクトはいやです
あー良かった。似たような状況でトルク検討したんだけど、
やばいニオイがして今回は避けたんだわ。
#DAOどころか、各所でSQLベタ書き…(苦笑
ただ個人的にオープンソースプロダクト(使う技術(製品)じゃなくて最終的に作る製品の方)
もやってるので、抽象化できるトルクは非常に魅力的。
別言語なので、まだStrutsの方からポートしてるんだけどね。
ストラトス4って知ってる?
157です。 apache 1.3.22 tomcat 3.2.3 mod_jkモジュールで連携してます。 JkMount /*.doの設定でポート80で動くようになったのですが mod_jk.conf-autoはtomcat起動で初期化されてしまいます。 mod_jk.conf-autoにJkMount /*.doを反映するようにするには どうすればよいのでしょうか?
>>167 いまどき3.2かよ。。。
mod_jk.confのauto生成はやめて、手で
JkMount /examples ajp12
JkMount /examples/* ajp12
みたいにしたらええやん。
まぁあとはTOMCATスレにでもイってきいてみてください。
3.2.xの人がいるかどうかは知りませんが・・・
169 :
nobodyさん :03/07/09 05:13 ID:6Wv2HqZv
Strut1.1で、テーブル状にフォームを並べて、hogehoge[10].name み たいな要素名をつけたときに、ActionFormに内の配列 hogehoge をコン ストラクタで初期化しないとArrayIndexException出るのは仕様?
170 :
145 :03/07/09 14:34 ID:l6h4pKLR
>>163 えーとね、Torqueがヤバいのは「使いこなすまでの期間云々」ではなくて
Torque自体がイマイチということです。
この種のフレームワークを一通り試してみた限りでは、
Hibernate > CastorJDO >>>> Torque = ObjectRelationalBridge(OJB)
という印象でした。
Hibernate
* マニュアル充実
* マッピングの自由度高
* 設計が奇麗(APIの敷居が若干高めかも)
CastorJDO
* マニュアルちょっと不足気味
* 採用事例も少なめ
* マッピングの自由度中
* APIは理解しやすい
Torque
* マニュアル貧弱
* 導入しようとしている人はよく見かける
* OQLやSQLもどきではなくCriteriaを使うので自由度に欠ける
171 :
145 :03/07/09 14:36 ID:l6h4pKLR
あぼーん
173 :
nobodyさん :03/07/09 23:40 ID:/FzUJF2H
174 :
nobodyさん :03/07/11 05:13 ID:nfu8obQl
strutsメーリングリストって英語できない人が多そうだね
175 :
nobodyさん :03/07/15 02:04 ID:tacmQetG
1000 を 1,000 に変更してくれるタグを誰か作ってくれないかな・・・
__∧_∧_ |( ^^ )| <寝るぽ(^^) |\⌒⌒⌒\ \ |⌒⌒⌒~| 山崎渉 ~ ̄ ̄ ̄ ̄
177 :
145 :03/07/15 16:43 ID:/HlfTkea
>>175 <bean:write name="foo" format="##,###"/>
178 :
175 :03/07/16 02:14 ID:CgeCIzkz
179 :
144 :03/07/16 21:31 ID:???
>>170 あなたのような人と仕事がしたかった。
Hibernate, CastorJDOは使った事無いのでそれらがどれくらい
良いのかは分かりませんが、気になりますね。
ただ、みんなしてRDB/Objectマッピングが初めてで工数は無視出来ない
っすね〜。
180 :
145 :03/07/16 23:08 ID:drBR3s7f
>>179 ひょっとしてマッピングの実作業(XML記述)も分業してたりします?
経験上、マッピング用XMLの記述・メンテナンスは誰か一人に
担当させて、その他大勢はBeanだけをいじらせるようにしたほうが
トータルの作業時間は減ると思う。
181 :
nobodyさん :03/07/18 11:22 ID:s7uP94Oi
こちら様を参考にしてstruts-configを分割したんですけど、エラーが出でます。
ttp://homepage2.nifty.com/ymagic/struts/samples/subapplication/ 「struts-config」の一部を「struts-config-A」に分割したんですけど、「A」フォルダ内のjspに書いてあるactionをうまくとってくれません
構造は
test
+index.jsp
+A
+top.jsp
+result.jsp
struts-config-Aの中身
<form-beans>
<form-bean name="test_FB" type="(略)" />
</form-beans>
<action-mappings>
<action path="/test_action" name="test_FB" type="(略)">
<forward name="success" path="/result.jsp" />
</action>
</action-mappings>
という感じです。(略)の部分は、分割前は通用していたので、大丈夫だと思って省いています。
それで、jspページ(A/top.jsp)です
<html:form action="/test_action">
(以下略)
が、最上部の「index.jsp」からこの「A.jsp」ジャンプしたら表示されないです。エラーメッセージは出ます。
「javax.servlet.ServletException: Cannot retrieve mapping for action /test_action」
というエラーが表示されます。たぶん、メインの「struts-config」にactionを書けYO!ってことなんでしょうけど、
それじゃ分割の意味がないと思うんです。分割したままでうまくいかせるにはどうしたらいいでしょうか。
あぼーん
183 :
181 :03/07/18 11:51 ID:???
追記 A/top.jspの <html:form action="/test_action"> (以下略) ですが、 <html:submit 〜 ボタンで、処理を行いたいと思っていまます。参考ページでは、全部 <html:link page="/test_action.do">とべ</html:link> で処理を行っています。だので、<html:link>を使った方法はわかるんですけど、 <html:form>内の<html:submit>を用いた方法が全くわかりませんです。はい。 よろしくお願いします。
185 :
145 :03/07/18 12:58 ID:Y7RkANYh
>>181 A/top.jspにブラウザで直接アクセスしてるんなら当然の結果。
struts-config.xmlを分割した場合、Struts内部でモジュール(サブ
アプリケーション)も切り替える必要がありますが、Actionクラスを
経由しないルートだとそれが行われません。
struts-config.xmlを分割するんならJSPには直接アクセスさせないで
必ずActionを経由するようにするのが一番楽です。
どうしてもJSPに直接アクセスさせたいなら、
org.apache.struts.actions.SwitchActionを使ってA/top.jspに
フォワードするようなaction定義をstruts-config.xmlに記述しておいて
index.jspからはそのアクションへ飛ぶようにします。
詳細は以下のスレッド参照。
http://www.freeml.com/message/[email protected] /0002205
186 :
181 :03/07/18 14:14 ID:???
>>185 ありがとうどざいました!
<action path="/Go_A" forward="/top.jsp" />
を用意したら、うまくゆきました!
最初はこれを「struts-config」内に用意していたのですが、
「struts-config-A.xml」内に移植して「index.jsp」を
<html:link page="A/Go_A.do">とんでゆけ、まず最初に</html:link>
と書き直したら、うまくいきました。本当に感謝です!!( ´∀`)ノ
>>184 スマソ
あぼーん
あぼーん
うわ、このスレで同じ会社の人間を見つけた。 とりあえずお互いに頑張りましょう。 以下内輪的メッセージです。 Strutsだと作業効率さらに悪くなるような。メリットより総合的 デメリットが多いように感じます。今までがJAVA環境ならともかく 殆どJAVA経験がない現場でいきなりStrutsはどうかと。確かに今までの 環境もどうかと思うが、それ以前にプロジェクト管理体制が変わらない 限り同じ事の繰り返しじゃないんかな。
>>189 それは危険かも・・・
Strutsは「難しいところを隠蔽してよくわかっていない人でもそれなりのものが作れてしまう」フレームワークではないと思う。
今のところは「わかっている人が楽をするため」「わかっている人同士で実装方針を統一するため」にしか使えないような・・・
Struts は画面規模がとにかくでかいプロジェクト向けだと思うのは気のせいかな。 ActionForm を管理する機構をなんかしら持っていれば効率も上がるど、 なにかしらの作業を定型化するツールとかテンプレートか、少なくとも作業ルールがないと、 導入したことに対するリターンは得られにくいと思うよ。 特に struts-confix.xml が肥大化していくと、 struts-config.xml と ActionForm と Action を一括で管理するデータベースがほしくなる。 というか今作ってる。 元はExcelマクロ程度のものだったのに今じゃ Excel + ODBC + MySQL と、 むしろこっちが肥大化していく悪寒。
192 :
145 :03/07/22 17:11 ID:jz0NlCfl
Action/ActionFormの情報をRDBMSに放り込んでおくメリットってある?
193 :
nobodyさん :03/07/22 17:28 ID:hpMBis3j
PC初心者板から誘導されてきました。 .aspという拡張子ファイルなのですが(内容はアプリと思われる)これは単体で リネームなどして実行ファイルとして使えるものでしょうか? 検索かけてもどうも分かりません。 イメージファイルのようなものでしたら変換ソフトも教えて下さい。 お願いします。
>>193 すれ違い。.aspはActiveServerPagesといって、MicroSoft謹製の
Webサーバ「IIS」上で動作するスクリプト言語のソースファイル。
Javaとは無関係だよ。
195 :
193 :03/07/22 18:28 ID:hpMBis3j
>>194 失礼しました。IISスレ探してみます。どうもでした。
あぼーん
保守sage.
∧_∧ ∧_∧ ピュ.ー ( ・3・) ( ^^ ) <これからも僕たちを応援して下さいね(^^)。 =〔~∪ ̄ ̄ ̄∪ ̄ ̄〕 = ◎――――――◎ 山崎渉&ぼるじょあ
199 :
nobodyさん :03/08/31 02:49 ID:ZzExwvfl
age
strutsってさ、なんかもう旬をすぎちゃってる感じ。
>>200 「新しいモノ」としての注目を集める時期は過ぎたってことでしょ。
今はある意味知っていて当然というか。普通に使えて当たり前というか。そんな時期にさしかかった頃合い。
202 :
nobodyさん :03/09/15 18:49 ID:aiY7K6ke
>>201 Struts 1.1 リリースから、まだ3ヶ月ぐらいだけどね。
203 :
nobodyさん :03/09/16 13:47 ID:mxgE1Vm0
>>202 Struts 1.1 リリースまで、1年4ヶ月くらいだけどね。
204 :
nobodyさん :03/10/11 00:52 ID:rdHrqAWa
Strutsを使用してサイトを構築する際に検索エンジン対策として気をつける点はありますか?
無いです
206 :
nobodyさん :03/10/11 17:18 ID:jPButUb5
ASP.NETになれてしまうと、strutsには戻れない
207 :
nobodyさん :03/10/16 08:35 ID:3FdVo5FI
struts-config.xmlの定義を画像ファイルや ドキュメントにするようなツールはありますか??
208 :
+++ :03/10/16 09:37 ID:???
209 :
nobodyさん :03/10/17 07:52 ID:N1Edic2x
>>208 THX。
いま後付けでプログラム仕様書を作成しているのだが、
struts-config.xmlってコメントを書き込む要素が無いのが辛い・・・。
>> 209 XML なんだから、いくらでもコメントかけると思うが?
Struts開発する場合、Eclipseプラグインのお勧めってある? 無償で。 EasyStrutsちょっと使ってみたんだけど、どうもいらんことしすぎてくれてありがた迷惑って感じなんで、 コード補完してくれるとかシンプルなのがいいんだけど。
212 :
nobodyさん :03/10/22 07:13 ID:ihc8onaF
画面に表示する文言を全部 ApplicationResources.properties に書いて JSPには <bean:message> をひたすら書いていたんだけど 「何でそこまでするの?」「(どうせ日本でしか使わないアプリなのに)意味あるの?」と聞かれて 答えに詰まってしまいました…。 何か説得力のある答えってないですかねえ。
213 :
nobodyさん :03/10/22 08:20 ID:pWZ5PAp/
>>212 文言の不統一防止。
変更箇所の局所化。
あと、カスタマイズすれば、例えば、標準語リソース、関西弁リソース、
ひらがなリソースを切り替えとかできる。
hosyu
仕事でstrutsを使う事になりそうなんですが、 strutsするならこの本嫁!! みたいなバイブルはありますか?
216です。洋書は勘弁なので翻訳本がでるのはありがたいです。 12月発売なら今から始めてちょうどその本を読めるくらいになっているかも(なっているといいなあ)。 これ以外で、これから始める人向けの手軽でわかりやすい本はありますか?
>220 漏れは、はじめから読んでないっす。 PDFで公開している12章13章については読んだけど、Validate機能とTilesに関してはよくまとめてあった。 洋書版ほしかったけど、アマゾンJPじゃ在庫切れだから、、、さすがに、アマゾンCOMに注文するまではいってない。 なので、日本語翻訳版で確認してみます。 かんたんStrutsに関しては改訂版はチェックしてなかった、、、 220の話でもあるけど、StrutsほどJava、JSP、Servletの基礎が重要なものはないと思う。 のくせに、「Strutsを使うと管理が簡単に〜」という謳い文句を聞くとホント首かしげますね。
222 :
218 :03/11/24 15:43 ID:???
>>219-221 さん
たまたま適当に買ってみた本がその「カンタンStruts1.1」でした。ラキー。
ただ、
「StrutsはServletやJSPを使いこなせることが前提。」
に私はちょと心許ない。まずはJSP, Servlet本探しからですか。
Strutsつかいへの道は遠いですな。
223 :
nobodyさん :03/12/03 01:12 ID:eqfPDL25
jsp側で<html:errors/>のカウントを取得するインターフェースはないの? 知ってる人います?
224 :
+++ :03/12/03 05:57 ID:???
>>223 こういうのでいいのかどうだかよく判らんけど、
<%@ page import="org.apache.struts.action.ActionErrors" %>
<%@ page import="org.apache.struts.Globals" %>
<%
ActionErrors errors = (ActionErrors)request.getAttribute(Globals.ERROR_KEY);
if( errors!=null ){
int e_size = errors.size();
out.println("<p>" + Integer.toString(e_size) + "</p>");
}
%>
<html:messages>タグでどうにかできないかな、という感じもする。
225 :
+++ :03/12/03 06:07 ID:???
カンタンStruts1.1。前版のだけど、HelloWorld的アプリの説明がしっかり 行われてないから、初心者にはツライだろうと思った。疑問の残る構成。 改訂版はどうなんだろうね。それも見て判断したほうがいいと思う。
226 :
223 :03/12/03 22:59 ID:eqfPDL25
>>224 おお、まさにソレです。ありがとうございます。
重要な情報はGlobals.定数キーで引っ張れると。メモメモ。
APIリファレンスを全部読んでいればわかることだったのかなぁ。
strutsのソースまで読んでいる人ですか?
227 :
223 :03/12/03 23:05 ID:eqfPDL25
<action-mappings> <action path="/test_action" name="test_FB" type="(略)"> <forward name="success" path="/result.jsp" /> </action> </action-mappings> というので、path指定は$WEBAPPからのフルパスなのって、そういう仕様なんでしょうか。 相対パス指定しようとすると「/で書け」とJSPコンパイラに怒られる。
>>227 path指定ってのはfowardタグの属性のpathのこと?
struts-configのアクションマッピング自体がどこからでも
呼び出せるものだからそうなるんじゃないの?
229 :
+++ :03/12/04 10:58 ID:???
>>226 ソース見ました。見るのが速いなと思ったので。
確かにすぐ判りましたね。
230 :
223 :03/12/05 19:22 ID:HOKOQd3y
>>228 言われてみればそうですね。納得。
>>229 わざわざすみませんでした…。
ありがとうございます。
231 :
nobodyさん :03/12/11 19:54 ID:JRpQVx5x
JSPでStrutsタグ(html:linkとか)を生成して、さらにStrutsにHTMLを生成させる ことってできるの?普通にやったらStrutsタグそのままが出力されてしまったよ それとも俺無駄なことしようとしてるかしらん?
Struts で、ページから HTML を全部排除ってできるのかな? テンプレートなんかに全部押し込みたいんだが。
>>233 何がしたいのかよくわからんが、Velocityでも使えば?
【ゴールデンレス】 このレスを見た人はコピペでもいいので 10分以内に3つのスレへ貼り付けてください。 そうすれば14日後好きな人から告白されるわ宝くじは当たるわ 出世しまくるわ体の悪い所全部治るわでえらい事です
HTMLのフレームを使ったサンプルどこかにありませんか? 本でもOKです。
237 :
236 :03/12/26 23:18 ID:???
自己解決しました。 TomcatのAdministration ToolがStrutsを使用していました。 MemoryRealm使っていて丁度いいサンプル。 残念ながらTomcat4.1.29はStruts1.0でしたが。。
238 :
235 :03/12/27 18:18 ID:???
自己解決したのでもういいです 偽235
239 :
nobodyさん :04/01/04 05:06 ID:mf+7Ni9J
さっき、strutsを導入して、exampleを試しにみようとしたら、 HTTP Status 500 - org.apache.jasper.JasperException: JSPのクラスをコンパイルできません java.io.FileNotFoundException: /usr/local/jakarta-tomcat-4.1.27-LE-jdk14/work/Standalone/localhost/struts-example/index_jsp.java (Permission denied) と出ます。 index.jspのパスは/home/arata/tomcat/webapps/struts-example/index.jspなので上と違う気がするのですが… 教えて頂けたら幸いです。
240 :
239 :04/01/04 05:12 ID:mf+7Ni9J
ダウンロードしたファイルを解凍して、 webappsディレクトリ配下にあるwarファイルを CATALINA_HOME\webapps配下に設置しました。 特に他にやることはないはずなのですが…
>>239 エラーメッセージに「Permission denied」とあるとおり。
パーミッションの問題。
TomcatのworkディレクトリにTomcat実行ユーザの書き込み権限がないため。
なぜindex.jspがあるディレクトリと違うディレクトリでエラーになるのかは
Struts以前にJSPの勉強が必要。ヒントは、
ファイル名が「index_jsp.java」になっていること。
242 :
239 :04/01/04 06:16 ID:mf+7Ni9J
>>241 パーミッション変えたら出来ました!ありがとうございます。
最近Linuxをいじり始めたばかりで…ご迷惑かけました。
ヒントの部分なんですが、「index_jsp.java」というのは
javaファイルに変換されて、work上でコンパイルされているということで、
このとき書き込みできないとコンパイルしようがないってことですかね?
ベロシティを超えるデザイン分離、イベントドリブンな Tapestry に 鞍替えしますた。
Struts Studioのフリー版使ってみたんだけど おっそろしく楽だな。
245 :
nobodyさん :04/01/10 15:18 ID:qk2y/XVp
アクションクラスの設計について質問です。 A(条件画面)→B(詳細画面)に画面遷移するとき、 Bの画面に必要な情報を取得するロジックやらSQLは、 AとBのアクションクラスのどっちに書けばいいの? 今やってるプロジェクトでは、 1)A画面のリンクを押すと【A.doにForward】 2)Aのアクションクラス 1) SQLのキー情報をbeanにセット 2) 【B.do にForward】 3)Bのアクションクラス 1) beanからキー情報取得 2) SQL発行〜BのFormBeanにセット 3) getInputメソッドでB.jspを取得してそこにforward なんだけど、これって1動作に「.do」を2回通ってるから、 アクションの連鎖というやつなのかな? アクションの連鎖は「struts in action」という最近出た本によると、推奨されてない ようだけど…どうなんだろ。 皆さんのフレームワークではどうやってますか?
A画面からB.doへ跳ばさないのはなぜだ?
247 :
nobodyさん :04/01/11 11:39 ID:urpDrM8h
>246 >A画面からB.doへ跳ばさないのはなぜだ? やっぱり変なんですかね? うちの社内のフレームワークはこれが標準になってるみたいです。 ちなみにかなりの大規模プロジェクトです。 メリットとしては、 ・1画面(jsp)につき1アクションクラス、という解り易い構図ができあがる。 例えばB.jspの画面作成ロジックはB_Action.javaにある、みたいな。 ※通常のやり方だと、B.jspの画面作成ロジックをA_Action.java に書くのでわかりにくい。 逆にデメリットとしては、 ・遷移先のjsp名を次の画面のgetInputで取得している、 つまりstruts-configの <forward> ではなくて <Action input=> で 取得しているので、strutsの標準的な使い方ではなくなっている(?) ことかな?
248 :
nobodyさん :04/01/11 11:53 ID:urpDrM8h
補足です。 1画面につき1アクションクラス、というのは具体的にはこうです。 ・<global-forwards>はこんな感じ <forward name="A" path="/A.do"> <forward name="B" path="/B.do"> ・<action-mappings>はこんな感じ <action path="/A" type="A_Action" input="/A.jsp" name="A"/> <action path="/B" type="B_Action" input="/B.jsp" name="B"/> A画面のボタンを押したら、 (1) A.do にサブミット (2) A_Action実行 → findForward("B") (3) B.do にフォワード (4) B_Action実行 → getInputで "B.jsp" をゲット (5) B.jsp 表示 てな動きです。 こういう使い方は邪道なのでしょうか?
(°Д°)
馬鹿だ。 1画面につき1アクションクラス、というのは 「jspにたどり着くためには*.doを経由させる」ということで kuso.do→kuso.jsp unko.do→unko.jsp の時の遷移は kuso.doにリクエスト→kuso.jsp表示→ kuso.jspからunko.doにリクエスト→unko.jsp表示 なのであって 「*.jspの送信先がそのjspに対応するアクションクラス」というのは つまりあれだ、 氏ね
>>190 を読んだ方がいいと思うよ。
つーか確かに最初はよくワカランが、
2、3日〜長くても一週間もあればぼんやりと全体像は見えてくるだろ?
少なくとも画面遷移の仕方とかさ。
カスタムタグの種類や使い方がおぼつかない、というのならまだしも。
>>248 >>244 でも使えば?
GUIで設計できる上に遷移図の印刷も出来るから
自分らがどんだけクソな作業してるか実感できると思うよ。
253 :
248 :04/01/11 22:13 ID:p9BR0Sf1
レスありがとうございます。 でも、この設計でだいぶ開発が進んでいるので、 再設計しての後戻りはできそうにないんです。 動きに問題がないのであれば、このまま行くしかない…(;_;)
>>253 それよりもだな、自分の書いたことの間違いに気がついたのかと
255 :
nobodyさん :04/01/12 15:03 ID:qVNFm6x6
256 :
nobodyさん :04/01/15 00:31 ID:viAU4C2J
教えて下さい。 イクリプスで、すべて再ビルドを選択すると ApplicationResourcesが文字化けしてしまいます。 原因はソースフォルダ直下にApplicationResourcesを置いているからなのですが、 良い管理方法が見つかりません。 指定したファイルを削除しないで「すべて再ビルド」、又は 指定したファイルにだけnative2asciiを当ててくれる みたいな方法ってありますか? EasyStrutsやらのプラグインを入れれば解決したりするんでしょうか。 そもそもソースフォルダにApplicationResourcesを置いているのが間違いでしょうか・・・ 良い管理方法をご教示ください。 Tomcat,winXP,eclipse2.1,struts1.1
>>256 全体的に勘違いしている悪寒
そして全くのスレ違いですよ野糞
自己レスです。 native2asciiをあてたものをソースフォルダに置くことで解決しました。 何で気付かなかったのか不思議ちゃんです。 お騒がせ致しました。
一年前、テキストエディタオンリーでStruts勉強してた。
しかし、一体何をやっているか、わけがわからんかった。
現在、Eclipse+Struts Studio。もう効率はいいし
Struts StudioのおかげでStrutsの全体像もつかめて
何をやっているか意味がわかるようになった。
>>245 なんかを見てると、去年の自分を見ているようで歯がゆい。
Strutsって、htmlタグ使わないかんの? ひょっとしてそれ使わんとできへんこと多い?
このスレは、Struts を「いじくり倒す人」の為のスレでございます。
別にカスタムタグ使う使わないは自由。 別に全く使わなくても問題なし。
>>261 なんだ。Strutsを「いじくり倒す」といいながらそれだけの技術力もなく、
現行のStrutsに「粘着する人」の為のスレでしたか。
いじくり倒してんなら分かるだろ?
でも
>>260 は Struts 始めたての子が考える疑問じゃん。
265 :
260 :04/01/19 21:54 ID:???
jakartaのtaglib使いたいんだけど。
>>114 (間違ってるけど)や
>>224 のようにJSTLやスクリプトレットも
普通に使えるから好きにすればいい。
268 :
singles :04/01/20 14:42 ID:vmpc82Q3
>217 219 220 「かんたんStruts 」にはやられた。 本当に改訂版? CD付きなのに、全ソースじゃないし。 実行時エラーは出るし。バグだらけだよ。 やすがにコンパイルエラーはなかったけど。 損した!!
別のスレで質問してどあほうからしか回答がなかったから聞きますが、 c:forEach でコレクションをくるくるってのがStrutsでできません。 自動生成されたjavaのソースを見ると、itemsに設定したものが コレクションとしてでなく文字列として渡されてしまいます。
<logic:iterate /> ではダメな理由を言えよ。 あともしStrutsのタグライブラリを併用しようとしてるなら出力時はelを使わねぇと出ねぇぞ。 <bean-el:write 〜/> など。 しかもサーブレット2.3からじゃないと動かない。
Strutsをいじくり倒すのに理由がいるのか。 それともStrutsの次期バージョンには興味がないのか。
せっかくStruts使ってるんだから、わざわざJSTLにすることも無いだろ。 JSTLがうまく使えないっつうのなら、スレ違いだろ。
もっともだ
そうだそうだ。俺たちは知ったかぶりなんだ。Strutsのソースを調べなきゃ分からないことを聞くんじゃない。
275 :
nobodyさん :04/01/24 23:56 ID:NRU8Gq4U
276 :
nobodyさん :04/01/25 00:18 ID:56Ciihh9
277 :
nobodyさん :04/01/27 09:45 ID:DNV4wH9r
初めまして。 struts初心者です。 BBS作ってるんですけど、どうやら自動で ResponseUtils.filterを通されてるらしくて 改行を<br>に置き換えたりとかしたいんですけど すべて & → & みたいな感じで変換されちゃってそのまま表示 されてしまいます。 なんとかこいつを黙らす方法ないでしょうか?
279 :
nobodyさん :04/01/27 22:45 ID:XpbhJdiO
>>278 すみません。
<bean:write name="onemsg" property="msg" filter='false'/>
でやってみたんですけど、駄目でした。
<pre><bean:write name="onedata" property="msg" filter='false'/></pre>
はできはするけど力技っぽくてプログラム的に美しくないとか思うのは思い上がりですかね?
281 :
nobodyさん :04/01/27 23:14 ID:XpbhJdiO
>>278 すみませんでしたm(_ _)m
大ボケかましとりました。
<bean:write ... filter='false'/>
でいけました。
どうもありがとうございました。
282 :
nobodyさん :04/01/28 22:12 ID:15MYH/xw
そもそもMVCモデルをパターンと
iterateタグの中にiterateタグを使ってるようなサンプルソースが載ってるトコ ってどっかにないですかに
285 :
nobodyさん :04/02/04 19:54 ID:LrI+0eVy
書くとこ間違えたか・・?
あげちまった・・
287 :
nobodyさん :04/02/05 05:33 ID:g7RFhJQT
strutsを使用する場合、JSTLは使ったほうがいい? それとも使わないほうがいい? いろいろな面から意見を聞きたいです。
JSTL使わないとキツイ、って時は使ってる。 実はスクリプトレットで書いちゃった方が楽だけど、無理してる。
291 :
nobodyさん :04/03/01 04:14 ID:Durte6J6
Struts の data-source って、もう使わない方がいいのかな?
やらないほうがいいって書いてあるね
293 :
nobodyさん :04/03/01 19:47 ID:Durte6J6
>>292 じゃあ、せっせとソースを直すか。
DataSource ds = getDataSource(request);
↓
DataSource ds = (DataSource)(new InitialContext()).lookup("名前");
しかし deploy 後に server.xml いじるの面倒だ・・・。
Struts って、もう使わない方がいいのかな?
295 :
nobodyさん :04/03/01 21:53 ID:GYV1jZxP
使わないほうがいいって書いてあるね
296 :
291 :04/03/02 01:17 ID:???
datascource を直したら、 [HttpProcessor[8888][4]] FATAL - [javax.naming.NamingException: Cannot create resource instance at org.apache.naming.factory.ResourceFactory.getObjectInstance(ResourceFactory.java:167) って言われるよ・・・
プーリングはcommonsの奴でやれ。
ところで、なんでdatasourceは使わない方がいいの?
299 :
291 :04/03/02 03:34 ID:AJ5+7psc
>>298 アプリケーション・サーバー側に標準技術があるから、そっちを使えって事かと。ブラウザーで設定できるし。それに Struts の DataSource は、接続先が1つにしぼられますね。
300 :
291 :04/03/02 03:36 ID:AJ5+7psc
>>296 自己レス。Tomcatのバージョンを 4.06 から 4.1.29 にあげたら解決した。理由は不明。
>それに Struts の DataSource は、接続先が1つにしぼられますね。 そうか?
302 :
nobodyさん :04/03/02 08:54 ID:nO+c0QMf
Struts + HIBERNATE、これ最強。
303 :
291 :04/03/02 10:33 ID:???
>>303 一生HTMLにロジック埋め込んでてください
306 :
291 :04/03/02 11:36 ID:AJ5+7psc
>>305 MVCは、Strutsでは不十分なのでしょうか?
>>305 が何を持ってそう判断したか分からんが
Tapestry + HIBERNATE、これ最強。
309 :
291 :04/03/02 17:40 ID:AJ5+7psc
>>307 HIBERNATEって、SQL ラッパーみたいに捕らえていいの?
詳しい人の説明をお願いします。
310 :
nobodyさん :04/03/02 17:50 ID:AJ5+7psc
>>309 DBアクセスレイヤーをもうけることで、役割が明確になり、
DB依存性を排除できる。理想は。
Hibernate だったらトランザクションやキャッシュ機構、
XML から Bean 生成、DB スキーマから Bean 生成、
スキーマ& Bean からXML 生成などがある。
Hibernate、オブジェクト操作だけで一通りのDB操作が可能だし、 さらに細かいことやりたいなら、HQLっつーSQLライクな記述でゴリゴリできる。 柔軟でいいよね。 たいがいのO/Rマッパーは、スキーマからJavaクラス作るときに、XML書いたり XDoclet用のタグ書いたりとめんどくさいのに、jFaceDbc使えば、 既存のスキーマをリバースして、Javaのソースまで作ってくれるのが、(・∀・)イイ!
314 :
291 :04/03/02 21:09 ID:???
>>312 >>313 情報さんくす。でも、一文で数千バイトのSQL文を書いてしまう私に、向いていない気がしてきた。
しかし、食わず嫌いは良くないので、近い将来試してみる(予定)
>>314 SQL 直書き好きなら DbUtils が簡単でいいぞ。
しかし数千バイトの SQL って本当に必要か疑問。
316 :
291 :04/03/02 23:03 ID:AJ5+7psc
>>315 DbUtils ですね。調べてみます。
>しかし数千バイトの SQL って本当に必要か疑問。
正規化されたテーブルから、レポートを一発で出そうとするとクエリーが複雑になりますね。
そして、複雑なストアドを書いたりすると、もっと多くなる予感。
ビュー使えよ
318 :
291 :04/03/02 23:24 ID:AJ5+7psc
>>317 おっしゃる通りですな・・・(´∀`)モケモケ
突然脈絡の無い質問で申し訳ないのですが、 Struts環境下でSessionをオブジェクトに格納した場合、 TokenIDなるStruts固有のIDなるものがattachされるのですか? (もし存在するのであれば)またそれってなんのためにあるんでしょうか? すみませんがご教示お願いいただけないでしょうか、みなさまがた。。
320 :
nobodyさん :04/03/03 15:03 ID:mGkaH2Ir
321 :
Gon :04/03/04 15:35 ID:???
早速の返答ありがとうございました! ですが、セッションに格納するのに二度押し防止というのは 状況が良く分からないのですが、たとえばどのようなケースでの話しなのですか?
自己レスです。 これってブラウザで何らかの処理をしたあとに戻ってしまったときに、 もう一度その処理をしてしまわない(たとえば入金など)ようにするための するという話でしょうか?
323 :
nobodyさん :04/03/04 16:33 ID:MDOKWyiL
324 :
nobodyさん :04/03/04 18:33 ID:+Av049LB
>322 そゆこと。 書き込みボタンをダブルクリックしたら、2重投稿になる掲示板とかもあるよね。 ああいうの防止にも使えるし。 複数画面にわたった処理がある場合に 途中の画面でブックマークされて後日そのブックマーク使ってアクセスされた場合にも システム側でトークンの有無を見てたら、どこかの画面に飛ばしたりもできる。 色々便利ですよ。
325 :
nobodyさん :04/03/06 06:16 ID:Ag2/McPy
@ITの記事なんか話半分に聞いとけ
validate()によるエラーメッセージ出力以外で Actionクラスから画面にメッセージを出力する場合の最適な方法って何? Beanに詰めてJSPで出力が妥当かな?
>>327 ・Action#saveErrorsを使う
・struts-config.xmlにexception要素を定義して、Actionからは例外を投げる。
・MyActionBase extends Action とかして俺様メッセージ表示機構を作る。
・自前のRequestProcessor用意して何かできるかも。
・その他
何が最適かなんて一概には言えないでしょ。
bean:writeでいいんじゃねーの
エラーはエラーとしてはっきりと区別させたい(<html:errors />で出したい)ならsaveErrors メッセージが必要なだけならBeanに詰めてJSPで出力(<bean:write/>)
>>325 @ITはM$好きであることと、山田某が.NET、Javaかまわず何でも書いてる奴
であることを考えると、@ITはJavaを潰そうとしているのではないか?w
しかし、山田某、見境無いなあ・・・。金ないのか?
「10日で覚える〜」を書く人間がまともとは思えないよ。
333 :
nobodyさん :04/03/10 00:18 ID:Y4AzoxeC
Struts+JBossって使われているの?
EJB興味はあるんだが、敷居が高そうな感じがする。 でもServletだけでは限界を感じるしなあ。
>>335 レイヤが違うもので限界を感じるっていわれても意味が分からん。
ORマッパーをどれかひとつと言われたら Hibernate。 間違いない。
337 :
nobodyさん :04/03/12 03:25 ID:5qVN4VSs
>>335 機能だけなら Servlet で全て足りている気がしなくもない。コード量が膨大になるだけ。
>>336 Hibernate を熱く語っているね。
>>336 EJBといえばO/Rしか思いつかんのか?
>>338 あと EJB といえば過去の遺物かな。
340 :
nobodyさん :04/03/13 20:05 ID:OCTfOcMT
<html:link>を使ってform(ActionForm)のsubmitって出来るんでしょうか?
341 :
nobodyさん :04/03/13 20:57 ID:1bZkOokW
>>340 フォーム名は分かるから、JavaScriptでonclickでイベントを拾えばどうにかなるかも。
やるべきではないと思うけどね。
342 :
nobodyさん :04/03/13 21:23 ID:OCTfOcMT
今こんな感じなんですけど、formの中が空なんですよね… <html:link action="/add" onclick='document.forms["turnover"].submit();'>[ADD]</html:link>
カスタムタグの中に変数って使えない?(もしくはスクリプトレット) <html:checkbox name="..." property="..." disabled="${変数}" /> みたいな。 resinでは使えたけどweblogicでは使えなかった。
スクリプトレットなら使えるよ
345 :
nobodyさん :04/03/13 23:15 ID:OCTfOcMT
スクリプトは使えると思うけど、どうやってformをsubmitするんでしょう?
JavaScriptでフォーム送信するなら、 <html:link>つかう必要ないだろ <A>で良いだろ
そんな本当のこと言ったらhtmlタグはほとんどいらんぞ。
一番いらないのは<html:html>ではないかとw
beanやlogicは便利だけど、htmlは本気で意味不明
<html:form>も必要ない?
そんなこと言ったらStrutsなんていらんぞ
353 :
nobodyさん :04/05/15 13:04 ID:iT9NId+G
Struts、確かに便利ではあるがページフローの制御がいまいちよくわからんですよ。 セッションオブジェクト使用不可な条件なんですが、これって自縄自縛っぽい状態なのか?
え? その制御を楽にするためのStrutsじゃないの? あとそれとセッションオブジェクト使用不可な条件と何が関係あるの?
セッションを使えないという仕様なのか? Strutsは確か、セッションを使用しないとダメじゃなかったか?
356 :
tommy :04/05/17 10:43 ID:UlYZTV/R
strutsを使ったショッピングカートのサンプルが置いてあるサイト あったら教えてもらえませんか?
なぁ、submitボタンのvalueってつかうのか? それも2バイト文字を参照して内部動作を分岐させているよう なのだが・・・。 Strutsではそれが普通なのか?まったく解せないでつよ(困惑
は?
>>360 はStrutsのソースがクソと言いたいわけか・・・
>>358 Struts作ったやつらははじめ2バイト文字のことなんか
考えてなかったのだが後になってあわてて2バイト対応したためと思われ。
>>362 いや、Strutsのソースじゃないよ。
>>360 ありがとう、やっぱあのSEはクソだわ。
それって、複数あるsubmitボタンのどのボタンを押したかを判定してるのか? strutsでそんな機能があったはずだが。
>>363 Struts の org.apache.struts.actions.LookupDispatchAction の話じゃないのか?
366 :
nobodyさん :04/06/11 14:14 ID:pbSttBHh
質問させてください。 Struts1.1でValidatorを使ってるんですが、 JSPで1つのacitonの中に更新ボタン、クリアボタン、戻るボタンがあります。 更新ボタンが押されたときはValidatorで入力チェックを行い、 他のボタンが押された場合はValidatorが効かないようにしたいのです。 今後携帯にも展開する予定なのでJavaScriptは極力避ける方針なのですが、 どのようにすればよろしいでしょうか? actionを分ける事も考えたのですが、改行されていまうため、悩んでいます。
>>367 本当だっ!ありがとうございます!!
助かりました(^^
369 :
366 :04/06/11 15:52 ID:???
html:cancelに関して、もう1つ質問させてください。 propertyに値を指定するとValidatorを回避できないようですが、 1つのaction内にhtml:cancelを複数設置して、actionクラス側で判定する事は可能ですか?
370 :
366 :04/06/11 15:54 ID:pbSttBHh
例えば「クリアボタン」と「戻るボタン」を設置したい場合などです。
>>369 org.apache.struts.actions.LookupDispatchAction
372 :
366 :04/06/11 17:57 ID:pbSttBHh
>>371 ありがとうございます。
試してみますm(_ _)m
struts-facesってうごかんじゃないかー
376 :
nobodyさん :04/06/16 23:51 ID:zsyyEODZ
質問なのですが、検索結果を、strutsの<logic:iterate>タグを使用してJSPに表示しています。 そこで、例えば検索結果が100件あったとして、そこから30件ごとに分け、googleのように次の〜件 とするには、どうすればいいでしょうか? iterateでlengthの値を30にしても、30件しか、もちろん表示されません。 いったい、どうすればいいのかわからないです。 難しいですが、分かる方は、ぜひ教えて欲しいです・・・・・・。
>>376 >iterateでlengthの値を30にしても、30件しか、もちろん表示されません。
30件ごとに分けたいんだろう。なのに
>30件しか、もちろん表示されません。
というのはおかしい。
言いたいことはわからないでもないが、人にものを伝えるときはもっと気を遣え。ばか。
offsetつかってスタート地点を決めればいいだろが馬鹿莫迦バヵ
378 :
376 :04/06/17 00:28 ID:jy0PTqdk
>>377 マジツッコミ、サンクスです。
offsetでスタート決めるのはわかりますが、offsetの値を動的に変えるにはどうしたらいいでしょうか?
あと、submitで「次の30件を表示」などを用意して、遷移先を、検索結果が表示されてる、今いるこの画面に
次の30件を表示する方法がわからないです・・・。
説明下手でスマソなのですが、宜しくお願いします〜・・。
>>379 ドトネトでなくても、ADOなんかだとページ単位で切り分けるの簡単だよな。
こーいうの標準で用意してくれりゃいいのにね。
>>380 面白いね
383 :
376 :04/06/19 01:47 ID:2EKqNUkj
だめだ・・。やっぱりできない。 JSPBeanがわかんない・・、javaBeanとは違うの? Beanの値をoffsetにいれても,、次の30件表示のリンクを押してoffの値を、変化させる方法がわかんないです・・。 Servletでもいいので、いいサンプル載ってる所ありませんかね? ぶっちゃけ、Servretでも、できない・・・。
384 :
nobodyさん :04/06/19 18:32 ID:pMTsomP7
>>387 ぶっちゃけなんでもいいんだよ。数字(で構成された文字列)が返ればね。
offset="<%=�anyBean.getOffset().toString()�%>"
でも
offset="<%=�anyIntegerInstance�%>"
でも
offset="<%=�anyIntegerInstance.toString()�%>"
385 :
nobodyさん :04/06/19 18:35 ID:pMTsomP7
なんか化けたので再送 offset="<%= anyBean.getOffset().toString() %>" でも offset="<%= anyIntegerInstance %>" でも offset="<%= anyIntegerInstance.toString() %>" でも
>>383 には才能がない。
Javaの才能とかそういうんではなく、勉強する才能がない。
387 :
nobodyさん :04/06/20 09:32 ID:pwr2yWDM
>>383 素直にあきらめた方が賢明かも、、、。まあ、ヒントだけあげるよ。
「次の30件表示のリンクを押してoffの値を、変化させる」には、
どうしたらいいかを考えよう。
まず、「次の30件表示のリンクを押し」たことをサーバ側に伝える必要がある。
まあ、これは「次の30件表示」を行うアクションがあれば
それを呼び出すだけだからできるよね。
ここでつまづいているなら、Hello.worldからやり直し。
で、「次の30件表示」を行うには、まず今どこにいるかを
知ってないといけないよね。現在位置を知っていて、
はじめて「現在位置 + 30」という処理ができる。
で、現在位置を何で管理しようかという話になる。
独自のBeanを定義した方が何かと便利だけど、
まずはIntegerでもいいよ。先頭から始まるから、初期値は0だよね。
何で管理するかは決まったけど、このオブジェクトを
セッションに結びつけないと、毎回新しいオブジェクトを作成してしまって、
ちっともページが進まないということなってしまうよ。
おそらくつまづいてるのはここだよね。
ここがわからないなら、Tomcatについてる簡単なサンプルで
セッションの使い方を勉強するのがいいよ。
基本的なやり方は最初のページが表示されたタイミングで、
新しいオブジェクトをセッションに結びつける。
「次の30件表示」が押されたら、結びつけてあるオブジェクトを+30する。
この数値を利用して、一覧を再表示する。こんなところかな。
コピペかと思ったぜ。
だけど、
>>383 みたいなのがいるから、全体的なプログラマーのレベルが
低くなるんだよな。
がんばっているというのは良いことだけど、まず本を買え、と言いたい。
「次へボタン」を押したら現在のoffset+30送ればいいだけなのに、何をやってんのこいつは?
390 :
383 :04/06/20 14:30 ID:anBuFkfy
みなさん、アホな俺にいろいろと、ありがとうございました。
今一度、セッションから、勉強し直すことにします。
>>384 >>387 お二人とも、ありがとうございました!!
参考になりましたです。
391 :
単純形 :04/06/20 21:24 ID:???
ShowList.java: public class ProductInputAction extends Action{ public ActionForward execute(ActionMapping mapping,ActionForm form,HttpServletRequest request,HttpServletResponse response){ HttpSession session=request.getSession(true); session.setAttribute("offset",new Integer(0)); return mapping.findForward("showList"); } } NextPage.java: public class ProductInputAction extends Action{ public ActionForward execute(ActionMapping mapping,ActionForm form,HttpServletRequest request,HttpServletResponse response){ HttpSession session=request.getSession(true); Integer offset=(Integer)session.getAttribute("offset"); if(offset==null)session.setAttribute("offset",new Integer(0)); else session.setAttribute("offset",new Integer(offset.intVale+30)); return mapping.findForward("showList"); } } List.jsp ... <bean:define id="offset" name="offset" scope="session" /> <logic:iterate id="item" name="lists" offset="<%= offset %>".... ...
>>391 普通はこんな単純にはしないけどね
・全体件数を越えてページ繰りするのを防ぐ
・表示件数を変更できるようにする
・巻き戻しやページ指定ジャンプに対応する
....
というような理由から独自クラスを定義してそれを呼び出すのが普通。
>独自クラスを定義してそれを呼び出すのが普通。 …は? どうやるかなんか人それぞれだろ?
>>393 人それぞれというのは同意するけどそこにセンスが表れるんだよ
それぞれ違ったものが同じレベルのわけねーだろ?
独自クラスなんかイランよ。 規模にもよるが、全件Listに持ってる時点で疑問に感じるけどね 数万件ヒットしたらどーすんのよ。 基本的に現在位置と表示件数さえ持ってれば済む話だろ。
は? 独自クラス=全件リストしか思い浮かばないのか? 独自クラスがあれば、インターフェースを整理できるんだよ bean.init() bean.prevPage() bean.nextPage() bean.jumpPage(int page) bean.changeLineCount(int count) bean.getPageCount() ....
結局、offsetなんかを動的にパラメータとして渡すことができないと悩んでいるんだろ? 見当違いな問答してんなよ。
お〜い、ム板のストラシスレが大変なことに
>>398 てかスレ終わっちゃったし。次スレはどうなるのだろう・・・。
>>400 そこなのか?? まあ、そこでレスがどんどんつくならいいけど。
402 :
nobodyさん :04/07/03 09:06 ID:lwtie6Ml
質問2つお願いします。 1.Opera7.23をクライアントに使うとセッションIDをURL Rewriting する状態にならないとセッションの特定ができなくなってしまう らしく、強制的にセッションIDをGETにする方法教えてください。 2.Action経由でBeanで初期値を設定した<html:text>などの入力 フォームを<html:submit>で送信するときに、この画面を表示したま ま放置してセッションが破棄された後で送信すると、java.lang. NullpointerExceptionが出るのが、Global Exception の設定で キャッチするように設定しても捕まえられないので、捕まえる設 定などありましたら教えてください。 ==今の設定== <global-exceptions> <exception handler="com.hoge.test.exception.SystemExceptionHandler" key="errors.deadline" path="/WEB-INF/pages/syserror.jsp" type="java.lang.NullPointerException"/> </global-exceptions>
>>402 Filter使って、セッションをチェックするのはどうかな?
俺も、今から実装しないといけない・・・
404 :
nobodyさん :04/07/04 00:52 ID:B3Fr8XMm
405 :
nobodyさん :04/07/04 01:02 ID:B3Fr8XMm
406 :
nobodyさん :04/07/04 01:10 ID:B3Fr8XMm
407 :
nobodyさん :04/07/24 23:55 ID:QLmLFMYl
Tiles使うとNullPointerExceptionでるんだけど、なぜでるのかわかんない。。 stackTrace--- java.lang.NullPointerException at org.apache.struts.taglib.tiles.InsertTag.processAttribute(InsertTag.java:689) at org.apache.struts.taglib.tiles.InsertTag.createTagHandler(InsertTag.java:489) at org.apache.struts.taglib.tiles.InsertTag.doStartTag(InsertTag.java:451) at org.apache.jsp.aa_jsp._jspx_meth_tiles_insert_0(aa_jsp.java:118) at org.apache.jsp.aa_jsp._jspService(aa_jsp.java:85) at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:137) aa.jspがtilesのtaglib使ってるJSPです。 tilesのxml---- <tiles-definitions> <definition name="test" path="/jsp/aa.jsp"> <put name="xxxTest" value="/jsp/bb.jsp"/> </definition> </tiles-definitions> bb.jspはtestとか書かれてるだけです。
408 :
続き :04/07/24 23:56 ID:???
struts-config.xmlのplugin定義---- <plug-in className="org.apache.struts.tiles.TilesPlugin"> <set-property property="definitions-config" value="/WEB-INF/conf/tiles-defs.xml"/> <set-property property="moduleAware"value="true"/> </plug-in> aa.jsp---- <%@ page contentType="text/html; charset=MS932" %> <%@ taglib uri="/WEB-INF/taglib/struts-html.tld" prefix="html" %> <%@ taglib uri="/WEB-INF/taglib/struts-tiles.tld" prefix="tiles" %> <html:html> <body> <tiles:insert attribute="xxxTest"/> </body> </html:html> web.xml---- <taglib> <taglib-uri>/WEB-INF/taglib/struts-tiles.tld</taglib-uri> <taglib-location>/WEB-INF/taglib/struts-tiles.tld</taglib-location> </taglib> pageContextから値がとれてないようなんだけど、なぜ取れないのかがわからないです。。
>>407 念のため確認。
まさかブラウザから aa.jsp をリクエストしてないだろうな????
410 :
407 :04/07/25 01:45 ID:???
>409 うん。してない。Action通してaa.jsp呼んでるよ。
たとえば、aaa.jsp 作ってそっちを呼ぶ。内容は↓ <%@ page contentType="text/html; charset=MS932" %> <%@ taglib uri="/WEB-INF/taglib/struts-tiles.tld" prefix="tiles" %> <tiles:insert definition="test" flush="true" /> として、Tiles設定ファイルで定義した"test"という定義を呼ばないとダメ。
413 :
407 :04/07/25 01:55 ID:???
どーだめなの?
または、 <action path="/xxx" type="xxxAction" name="xxxForm" scope="request"> <forward name="xyz" path="test" /> </action> <controller processorClass="org.apache.struts.tiles.TilesRequestProcessor" /> Struts設定ファイルのcontroller タグでRequestProcessorにTilesRequestProcessorを 使うように指定してあれば、forwardタグのpath属性にTiles定義名を指定できる。
そうすると、 aaa.jsp内にaa.jspとbb.jspがでてくるような状態になるの? なんかaaa.jspが無駄のように感じるけど・・。
417 :
407 :04/07/25 02:05 ID:???
>415 おぉそういうこと! それでいけそうだ。 ありがとう。
質問させてください。 Strutsで、ボタンをクリックしたら繊維するようにしてるのですが、 その際、一部で空白のページが表示されてしまいます。 開発の中でこのような症状に出会った人いらっしゃいませんか? もう3日悩んでます(´・ω・`) 知り合い曰く、「フォワード先が見つからないとそうなる」と言われたのですが JSPで<html:submit property="xxx" />として、 struts-config.xmlで、<action ・・・><forward name="xxx" path="/xxx.html" /></action> Actionクラスで、return mapping.findforward("xxx") となっていることは何度も確かめたのですが・・・
mapping.findforward("xxx") の xxx はどれを指しているのか。 <html:submit property="xxx" /> <forward name="xxx" path="/xxx.html" /> と 3 つ xxx が出てくるけど
420 :
418 :04/07/25 18:49 ID:???
>>419 すいません、ゴチャゴチャにならないように同じ名前付けてるんです(;´Д`)
別の名前をつけるとしたら↓のような感じになるとおもいます。
[JSP]
<submit value="次へ" property="nextpage" />
[Action]
if( form.getNextpage() != null ) {
//・・・・・色々処理
return mapping.findForward("next");
}
[struts-config.xml]
<action ・・・><forward name="next" path="/sample.html" /></action>
JSPの方に問題があるかわからなかったので、ここではデバッグ用に普通のHTMLファイルにフォワードしています。
<action ・・・>が違ってたらいみねーな
一部で空白ページって事は、form.getNextpage()がnullなんじゃねえのか。
423 :
418 :04/07/26 21:57 ID:???
すいません、解決しました。 サーバ管理者がStruts1.0を入れていたのが原因でした。 私はexecute()メソッドを実装していたので perform()メソッドに書き換えたら無事動きました。 このようなアホな質問にも真摯に答えてくださった419さん,421さん,422さん 本当にありがとうございました。
424 :
nobodyさん :04/07/26 22:40 ID:YWaIeQt8
[tiles.xml] <definition name="xxx" path="template.jsp"> <put name="aaa" value="insert.jsp"/> </definition> [template.jsp] <%@ page contentType="text/html; charset=MS932" %> <%@ taglib uri="/WEB-INF/taglib/struts-html.tld" prefix="html" %> <%@ taglib uri="/WEB-INF/taglib/struts-tiles.tld" prefix="tiles" %> <html:html> <body> <tiles:insert attribute="aaa" beanName="aaForm"/> </html:html> [insert.jsp] <%@ page contentType="text/html; charset=MS932" %> <%@ taglib uri="/WEB-INF/taglib/struts-bean.tld" prefix="bean" %> <bean:write name="???" property="date"/> 上記のような状態で、template.jspで指定したBean(aaForm)の中身の値を insert.jspに渡したいのですが、どのようにtilesの下の属性のJSPに beanの値を渡せるのでしょうか。aaFormの内容は動的に変化します。
425 :
424 :04/07/27 01:10 ID:???
ム板のほうでも質問します。 両方みてるのでどちらかにレスを下さった時点でその旨を報告します。
なんだマルチか
まあどっちも過疎地域だし、報告もしてくれるならよいのでは。
428 :
425 :04/07/27 12:13 ID:???
解決しました。今携帯なのでどうやって解決したかはまた後で報告します。
429 :
425 :04/07/27 21:58 ID:???
帰ってきました。 bean:defineで解決しました。 [template.jsp] <%@ page contentType="text/html; charset=MS932" %> <%@ taglib uri="/WEB-INF/taglib/struts-html.tld" prefix="html" %> <%@ taglib uri="/WEB-INF/taglib/struts-tiles.tld" prefix="tiles" %> <html:html> <bean:define id="form" name="aaForm"/> <body> <tiles:insert attribute="aaa" beanName="form"/> </html:html> [insert.jsp] <%@ page contentType="text/html; charset=MS932" %> <%@ taglib uri="/WEB-INF/taglib/struts-bean.tld" prefix="bean" %> <bean:write name="aaa" property="date"/>
430 :
425 :04/07/27 22:23 ID:???
最後の1行間違えた。 誤:<bean:write name="aaa" property="date"/> 正:<bean:write name="form" property="date"/>
431 :
セキュリティ :04/08/05 00:50 ID:JUf/Rg2G
strutsを使ったWEBページ(JSP)でBASIC認証を掛けたいのですが 分かる方いますか?通常とおりにBASIC認証の設定をしても URLが○○Action.doとか○○Return.doとかなのでJSPと指定した ディレクトリ内のJSPだと認識してくれず、認証がかかりません。 指定したディレクトリに認証掛けるのではなく、指定したURLに認証を 掛けることってできるのでしょうか。
よくわかんねーので識者の反応を待って欲しいのだが ・サーブレットコンテナ側でベーシック認証 ・redirectするようにする とか?
>>431 出来るよ。
でもそれは Struts とは関係のない世界。
使ってる Web サーバすら書いてないから答えられないけどね。
434 :
セキュリティ :04/08/07 00:35 ID:eCns8z8W
回答ありがとうございます。
情報が足りなくすみません。WEBサーバはtomcatをコンテナにapacheを利用しています。
OS:RedhatLinux
AP:apache1.3.28
tomcat5.0.19
調べたところ、JSPの配置場所を変えればなんとかなりそうなのですが、
元々strutsでの開発を考えてなかったようでWEB-INFと同階層にJSP用の
フォルダが配置されています。そのため、現在の配置に対応するためには
JSP側のsubmitとstruts-conf側のactionの中でパスを追加しなくては
ならないみたいです。
ソースはいじらずに設定したいのですが、apacheやtomcatだけの設定で
どうにかならないでしょうか。
例】
DcumentRoot:/apl
jspの位置:/apl/test
1)
http://www.hogehoge.co.jp/apl/test/sys1/hoge.jsp 2)
http://www.hogehoge.co.jp/apl/HogeHoge.do 上記の例で1)のURLであればhtaccessでパスを解釈するのですが、
同じjspファイルを呼び出してもstrutsを使ったシステムでは2)の
URLのように表示されるため、ファイルパスがapacheで解釈されずに
制限を掛けたにも関わらず、画面が表示されてしまいます。
>432
tomcatでのベーシック認証でもパスの関係で上手く動作しませんでした。
redirectの設定についてもう少し調べてみたいと思います。
>433
何か方法があれば教えてください。よろしくお願いします。
また、もしできたら結果報告したいと思います。
>>434 勘違いしてないか?
認証は各ファイルに対して行うのではなく、リクエストに対して行うのだよ。
Servletがリクエストを受けるのなら、Servletのパスに対して認証を設定する。
Strutsに限った話ではないのだが。
じゃあ *.jspのリクエストを受け取ったら全部エラーにしてしまえ
>>434 >調べたところ、JSPの配置場所を変えればなんとかなりそうなのですが、
>元々strutsでの開発を考えてなかったようでWEB-INFと同階層にJSP用の
>フォルダが配置されています。そのため、現在の配置に対応するためには
>JSP側のsubmitとstruts-conf側のactionの中でパスを追加しなくては
>ならないみたいです。
>ソースはいじらずに設定したいのですが、apacheやtomcatだけの設定で
>どうにかならないでしょうか。
どうにかしようとするな。
438 :
nobodyさん :04/08/07 13:31 ID:s4CRkah5
JrunでStruts動かした人いる?
440 :
nobodyさん :04/08/08 04:45 ID:AIqU/7Pn
>>434 なんで433がサーバ書いてないだけで全く答えられないのか理解不能だが、フィルターとかweb.xmlに認証の設定書くとか、標準の範囲でもいろいろできると思う。
Actionからforwardじゃなくてredirectさせたいときって、 actionForward.setRedirect(true); return actionForward; でいけるとおもったけどダメみたい。 どうやるのが一般的?
>>441 え? それでリダイレクトしないのか?
それは他のところがまずいんじゃないの?
一般的にはそれか、<forward redirect="true" でしょ。
>>440 フィルターは Servlet 2.3 の仕様だろ。
古い AP サーバ使ってたら実現出来ないよね。
おまえの標準はどこからどこまで?
環境を書くのは当然の事だと思う。
444 :
nobodyさん :04/08/14 21:55 ID:hGsyY8QC
JSPでActionからのフォワードは許すが直接はアクセスされたくないときの スマートな解決方法はありますか。 JSPの先頭で判定したり、WEB-INF以下に入れるってのは思いつくんですけど 前者は煩雑だし(カスタムタグつくればいいかもしれないけど)、 後者は管理しにくくなるので避けたいです。
管理しにくくなるとはこりゃ驚きだ
>>444 どんな特殊な事情で煩雑になるんですか?
あ、
>>445 みたいに煽ってるわけじゃなくて、同じケースがあった場合を想定して参考にしたいので。
447 :
446 :04/08/14 23:24 ID:???
まちがえた、煩雑な方じゃなくて、 「WEB-INF内だと管理しにくい」方です。
LookupDispatchActionが使いにくいなぁ。 1つのフォームにボタンがたくさんある時に、そのボタンによって 分岐する場合で他にいい方法ない? 違うname同じvalueのボタンが大量にある場合は、Action内で分岐 していくしかないのかなぁ。
450 :
444 :04/08/15 00:34 ID:???
JSPは直接デザイナーが修正いれるので、 一連のJSPがWEB-INF内と外で分かれてるのはわかりにくいのと、 そもそもWEB-INF内を触らせるのがこわいので。 ほかに思いつくのは拡張子jspをjspsとか適当に変えて、 拡張子でアクセス制限かけるとかかな。
>>450 ならjspだけ別で管理すれば?
お前の書き込みだけでは情報が少なすぎて
DQNプロジェクトだと言うことしか和下欄
拡張子変えないで、*.jsp にアクセス制限かければいいんじゃない?
453 :
nobodyさん :04/08/16 19:53 ID:9tlzA3M2
以下のような構成でWebアプリを作成しています。 ・OS:Windows XP ・strus1.1 を使用 ・インタフェースはHTML で主に OracleDBアクセス ・開発ツール JDeveloper 9.0.3 ・システムは OC4J 配下で稼動 HTMLのテーブルタグの形式で一覧表示しようする と特定の日付範囲のデータを表示させようとすると、 テーブルタグの一部しか表示されないときがありますた。 [処理構成] 一覧表示は JSPで記述。Strutsのカスタムタグを使用して アクション部JavaBean にセットされたものを表示。 [調査] ・アクション側でJavaBean にセットされたデータをログ出力させて みたが特に問題はない模様。 ・JSP側のタグなどもチェックしてみたが、問題はなさそうであるし そもそも実行時には 例外が発生しないので構文自体には問題なし。 実は他の掲示板でもそうだんしたところ OC4J(← Oracleアプリケーションサーバ付属のサーブレットコンテナ) のバグでコンフィグファイルの編集でいけるとのこと回答 をいただいたけど、、やっぱりそれでもだめでした。 他にも同じようにはまった人いませんか? で、デバッガーなど調査するためのなにか良い方法が ありましたら教えてくださ い。 併せて、参考になる資料のURLなどもあればおしえてー
すとらつ関係ねーべ
>453 ああ、あれだ。JSPに表示するバイト数の制限オーバーしたんじゃねーの。 確かデフォルト8KBだった気がする。それ広げてみたら。
>>453 スレ違い。
商用製品使ってるんだからサポートに聞きなよ。
逆にサポート契約がないなら商用製品は使わない方がいいよ。
458 :
453 :04/08/17 01:43 ID:KSTk5Ht9
453です。 的外れな質問カキコにもかかわらず アドバイスありがとうございます。 456様へ そんな制限あったんですね。知りませんでした。 それやってみます。 457様へ なんせこの手の開発はじめてなもんで、 どこかショボーイ抜けがあるオチがありそうな気が して、サポートにヘルプまではという心境でした。 それに Oracle製品側じゃなくて struts側のバクってうたがってまして、、、 ここの切り分けが下手糞なんですかネーあぅ。 とりあえず、アドバイスいただいたことやてみます。
459 :
nobodyさん :04/08/17 09:47 ID:rYUQBx/N
Strutsつかって jsp内に複数あるテキストボックスの入力内容を 1つの配列に渡したいのですが、やりかた教えてください。 ヒントだけでもいいですので・・・
フィールドの名前を同じにするか、 ActionFormに配列で返すメソッドを設ける。
すまん・・ テキストボックスの数が動的に変化する場合、 それら入力値の値を取得するには どうすりゃいいのでしょうか? ActionFormの validateメソッドの中にゴリゴリ書くしかないのでしょうか?
464 :
:04/08/18 11:44 ID:???
Input.jsp ====================================== <html:form action="/owner"> name1 : <html:text property="email"/><html:errors property="name1"/></br> name2 : <html:text property="name"/><html:errors property="name2"/></br> ・ ・ ・ ・ nameN : <html:text property="name"/><html:errors property="nameN"/></br> <html:submit/><html:cancel/> </html:form> ====================================== from.java で、 private String[] name; とかいうプロパティにセットしたいのだが、 462氏が言う配列として取得するにはどうすれば・・・
あ、この場合はpropertyね
>>464 itareteで作ってるの?
それとも、自作?
どちらにしろ、すべてproperty="name"にすれば
form.javaで
String[] name = form.getName();
で取れる。
formはキャストしたものね。
ふと思ったんだが 配列で取る場合、格納される位置ってのは 保証されているんだろうか? たとえばソース表示で右上から順に 格納されていくとか・・・。
470 :
nobodyさん :04/08/24 17:42 ID:CGoWFOLW
ActionFormの初期値をデータベースなどから動的につくりたい場合 init.do(初期化Action) => input.jsp(入力フォーム) => input.do(入力Action) のように初期化するだけのActionを設けて、そこから遷移させるもんなんでしょうか? それともinput.jspの先頭でFormBeanを操作する?
init.doをForwardActionのサブクラスにしてその中でFormBeanを操作した。
472 :
470 :04/08/24 17:58 ID:???
>>471 速レスどうも。
メンテを考えるとできるだけ一般的な手法をとりたいのですが、
はじめてのStrutsなので結構難儀してます。
参考になりました。
473 :
471 :04/08/24 18:06 ID:???
>>472 すまそ、漏れの場合そうしただけでこれが一般的かどうか全然わからん
>>470 一般的といえばそれが一般的だけど、それ、ActionFormの初期化じゃなくてinput.jspの初期設定ね。
テキストボックスが10個あって それの入力内容を配列に格納したい時って たとえば private String[] textbox = new String[10] for(int i=0;i10;i++){ String param_name = "param"; param_name=param_name+i; textbox[i]=request.getParameter(param_name); } とかっていうダサイコードかかなきゃいけないんですか?
>>476 もしかしてスレちがいの話題?
Strutsなら直接request#getParameter()はしない。
>>475 > それ、ActionFormの初期化じゃなくてinput.jspの初期設定ね
ここよくわからん
478 :
476 :04/08/25 10:43 ID:???
10個あるテキストボックスのname属性を 全て同じ名前にすれば ↑のようなコード書かなくても Strin[g[] textbox=form.getParam(); で取れるんだが、これだと配列の要素位置の保証が 無いと469がいっていたので・・・・。 保証があれば、↑のようなコードかかなくてもいいのだが・・。
んなことしたけりゃ連番で名前つけろよ。 全部同じ名前ならどれも等価だろ、順番機にしてどうすんだ
そうだね。 ブラウザがどの順にPOSTするかも不定だろうし。 まー実装上は問題ない気もするけど。
実は仕事で配列を使ってデータを入力するフォームがあって、 各種プラットフォーム、osのテスト通ったが特に問題はなかったわけだが、、 たまたま?
>>481 たまたま。
実際にはHTMLで記述された順に送信するブラウザがほとんどだし、
そういう動作をしないブラウザを俺も知らないが
仕様上保証されているものではないので、順不同で送信する
ブラウザがあっても(既存のブラウザが将来のバージョンでそうなっても)
文句は言えないよ。
validation.xml用のEclipseプラグイン ってありますかね? あったら便利なんだけど
DBの検索結果をどっかのオブジェクトに保持したいのだが、 ActionFormのメンバ変数に保持させるのはあまり宜しくない? やっぱ自作のBeanを作ってそれをインスタンス化して格納して セッションに入れた方が良いのか?
基本的なことかもしれないけど教えてください。 JSPでタグを使って Beanのプロパティを表示したいのですが、 このBeanってもしかしてシリアライゼーブルをインプリメントしていないと タグを使ってもとりだせないのでしょうか?
logic:iterateをつかってBeanの内容を表示したいのですが うまくいきません、恐らくJSP側に問題があると思います。 ご指摘宜しくお願いします。 public class SerchForm extends ActionForm { private String[] serchresults_ID; /*以下省略します*/ } ====================JSP==================== ・・・・・・ ・・・・・・ <logic:iterate id="TserchFormd" name="serchForm" > <li><bean:write name="TserchFormd" property="serchresults_ID" /> </logic:iterate> ・・・・・・ ・・・・・・
すみません、全て自己解決しました。
Strutsを最近勉強し始めたものです。 サーバ : Tomcat 5.0.27 OS : Windows 2k , Fedora core 1 Struts version : 1.1 struts-htmlとstruts-tilesを使用しています。 サイト全てをxhtmlで出力させたいので、メインのレイアウト用JSPには <html:html xhtml="true"> と記述しています。 質問ですが、struts-tilesでheader.jspを読み込むようにしてあるのですが header.jspのほうで <html:img page="/images/hoge.gif" alt="" width="xxx" height="yyy" /> を入力するとHTML形式で出力してしまいます。 このようなtilesを使用している場合で 全てのパーツ(JSP)をXHTMLとして出力させる方法がありましたら 教えていただきたいです。よろしくお願いします。
489 :
488 :04/09/08 10:15 ID:???
いろいろ調べていたら対象方法がわかりました。 <html:xhtml /> このタグを各パートのjspに入れれば解決できました。 スレ汚し失礼しました。
491 :
nobodyさん :04/09/09 00:47 ID:nnK3UDEH
S2Strutsはどう?
Struts1.1でJSPを表示してSubmitするプログラムを作成しているのですが、 表示は可能なんですが、Submitしたら次のアクションに行く前に [BeanUtils.populate]: java.lang.NullPointerExceptionが発生します。 やはりリストの中のマップに値をセットするのは無理なのでしょうか? 何か良い解決策をお持ちの方、ご教授下さい。 次の発言にソースを記述します。
Actionクラス public class HogeAction extends Action { public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { HogeActionForm hogeActionForm = (HogeActionForm)form ; List list = new ArrayList(); for(int i = 1; i <= 10; i++){ Map map = new HashMap(); map.put("key1", "aaa" + i); map.put("key2", "bbb" + i); list.add(map); } hogeActionForm.set_dataList(list); /* ---以下省略--- */ } ActionFormクラス public class HogeActionForm extends ValidatorForm { private List _dataList = null; public List get_dataList() { return _dataList; } public void set_dataList(List d) { this._dataList = d; } /* ---以下省略--- */ }
JSP <html:form action="/hoge"> TABLE <logic:iterate id="dataList" name="hogeForm" property="_dataList" indexId="i"> TR TD<html:text name="hogeForm" property='<%= "_dataList[" + i + "].key1" %>' />/TD TD<html:text name="hogeForm" property='<%= "_dataList[" + i + "].key2" %>' />/TD </TR> </logic:iterate> /TABLE <html:submit value="Submit" /> </html:form> 長くてすみません。よろしくお願い致します。
ちなみにタグの<>があるとなぜか書き込みエラーが出てたので、 取ってます。Live2chのバグかな?
<TR> <TD> </TD> </TR>
<TR> <TD> </TD> </TR> って書いてみた。
500 :
492 :04/09/11 11:14:18 ID:???
何となく理由が分かりました。 <html:text name="hogeForm" property='<%= "_dataList[" + i + "].key1" %>' /> の様な書き方をすると、取得は出来るようですが、 セットする場合、に_dataListがnullになっているのでセット出来ないと 言っているのではないかと思います。 そこで、Submitした後も_dataListをnullにならない様にしたいのですが、 何か良い方法は無いのでしょうか? ご存じの方、ご教授下さい。 よろしくお願い致します。
どういうことをしたいのかわからんけど、 設計を変えたほうがいいよ。
502 :
492 :04/09/11 14:00:05 ID:???
ListにMapをセットして使用することは、よくあることだと思いますが、 Strutsではこういう使い方は出来ないと言うことでしょうか? 設計を変えるとしたら、どう変えるのが理想的でしょうか?
>>500 List型のプロパティに値をセットするときは、セットする前に
リストの要素を用意しておく必要がある。
方法はいろいろあるが、俺はActionFormのreset()メソッド内で
リストの要素を用意しておくことが多いかな
>>502 501は気にするな。自分でやったこともないのに適当に回答しているだけと思われ。
ListのなかのMapに値をsetできないってことか? そりゃそうだろう。
>>505 そうとも言い切れない
ActionFormのsetterの実装に依るだろう
507 :
492 :04/09/11 16:22:58 ID:???
503さんの意見を参考に、 resetメソッド内で事前にセッションにセットしたリストを取得する様にしてみました。 if (_dataList == null) { HttpSession session = request.getSession(); List list = (List)session.getAttribute("hogeList"); _dataList = list; } すると例外は出なくなりましたが、 TEXTフィールドに入力した値がセットされません。 JSPのproperty='<%= "_dataList[" + i + "].key1" %>'の部分の書き方が悪いのかな? というところまでは分かるのですが、どう変えたら良いのでしょうか? 何度もすみませんが、よろしくお願いします。
508 :
+++ :04/09/11 23:14:45 ID:???
出来ないんなら、まあそうなんじゃなかろか。誰か知ってるかも知らんけど。 とりあえず"dataList[0].key"の形でrequest.getParameterに入ってくるので、 それを読むか。 通常こういう場合、 <logic:iterate id="data" name="hogeForm" property="_dataList">で回して、 <html:text name="data" property="key1" indexed="true" />じゃあないかと 思うんだけど。結果は変わらないけど。
なんでreset()でやるんだろう 表示(初期化)のためのActionの中で必要な情報をcollectionに詰めて、formにsetすりゃいいだけじゃん?
>>509 ActionFormがrequestスコープの場合はダメ。
毎回のリクエスト受信時にActionFormのインスタンスは新たに生成され、
初期化処理で扱うActionFormのインスタンスと送信後に扱うActionFormのインスタンスは別になるから。
何か問題ある? 送信先で同じActionFormを使ってやりゃいいだけじゃん。
>>511 >>509 のやり方では送信先のActionFormのインスタンスの中のListプロパティの中が空っぽのままだろ?
513 :
492 :04/09/13 09:40:19 ID:???
>>512 そうなんです。
>>509 の方法だと、Listがnullになってしまうんです。
だから、property='<%= "_dataList[" + i + "].key1" %>'の書き方だと、
_dataList[0].key1という名前になり、それをActionSetvletか何かで、
_dataList.get(0).put("key1","hogehoge")というようなメソッドを呼んでると思うのですが、
_dataListがnullだからNullPointerExceptionが出るのだと思います。
514 :
492 :04/09/13 10:35:16 ID:???
みなさん、色々とアドバイスをいただき、 ありがとうございました。 結局、現在はActionFormに以下のソースを追加しました。 private String[] key1 = null; private String[] key2 = null; public String[] getKey1() { return key1; } public void setKey1(String[] k) { this.key1 = k; } public String[] getKey2() { return key2; } public void setKey2(String[] k) { this.key2 = k; } 画面表示時は、以下の様にしてListの内容を出力し、 <logic:iterate id="list" name="hogeForm" property="_dataList"> <html:text name="list" property="key1" /> <html:text name="list" property="key2" /> </logic:iterate> ActionFormにセット時はString配列にセットする様にして 処理しています。 でも、このやり方は邪道だと思っています。 もし他に良い方法がありましたらご教授下さい。
515 :
nobodyさん :04/09/13 22:16:56 ID:uejohbjj
Actionクラスの中でConnectionを取得してDBアクセスしてるコードが沢山あるんですけど、 何か弊害ありますか?
>>515 ビジネスロジックをActionクラスに書くな
517 :
nobodyさん :04/09/13 22:31:27 ID:uejohbjj
なにか弊害ありますか?
515じゃないけど、それって一般的なコードでの モジュール化をするかしないかの違いでしかないの? もうちょっと説得力のある理由があるのかとおもった。 そのAction固有のロジックで複雑でもなければとりあえずそこに書いといて、 必要になったときにリファクタリングで括りだす方針でも問題ないような。 Actionはシングルトンだから書けないロジックもあるのはわかるけど。
まあ、好きにすれば?
そのビジネスロジックを使い回したくなってから、わざわざリファクタリングするのか? MVCの利点が理解できなきゃこれも理解できないだろうけど。
>>521 Action をモデルとみなしてはいけない理由を教えてください。
524 :
nobodyさん :04/09/14 22:41:16 ID:DrU+5VXT
先輩がActionクラスに入るはじめのところでコネクションを取得して、 そのあとActionから抜けるまで使いまわすようなフレームワーク作ってるんですけど どうしたらいいですか? Actionクラスのメソッドの引数にconnとかがあります!
526 :
nobodyさん :04/09/14 22:52:17 ID:DrU+5VXT
先輩みっけ
>>524 Action の最初と最後をトランザクション境界にしてるんだろ。
違うのか? それはそれでありだと思うが。
ただ、Action クラスを継承して作ってんだったら、その先輩はうんこかな?
RequestProcessor を拡張し、コネクションは ThreadLocal から取得する
ようにしたほうが良い。Action のインタフェースも変える必要はない。
もちろん、この Action をモデルとして考えた場合の再利用性は低くなる。
が、プロジェクト内での再利用性は十分だし、開発効率も高い。
メテオはやめてお
529 :
nobodyさん :04/09/17 00:11:06 ID:UID/DeJQ
Actionで取得したconnectionをAction抜けた後のfilterでクローズしてみようかと思ってるんだけど そういう構成ってどう思いますか?
>>529 「Action抜けた後のfilter」って何?
531 :
nobodyさん :04/09/17 00:50:37 ID:UID/DeJQ
filterクラスってあるじゃん、知らないの? *.doに仕掛ければ*.doアドレスのやつは全部そのfilter掛かるんだよ。
>>531 俺はありだと思うよ。n階層モデルにおもっきり逆行してるが。
>>531 俺もありだと思うよ。
これから退職届けだして、それを引き継いだやつを地獄に落とすんだろ。
俺はアリ?だと思うよ アリ?こりゃおっかしいなぁ〜 寒いわボケ しね
モハメド・アリ
アリさんマークの引っ越し社
>>529 むしろfilterでコネクション取得して、切断。
Hibernateだと、「Open session in view」ってなってるから、さしずめ「Open connetion in view」だろうか。
>>527 Spring StrutsやらS2Struts使って、AOPでやればもっとよいかも。
Struts初心者の者です。 現象として、ApplicationResourcesに設定してあるメッセージを取得できません。 struts-config.xmlには、 <message-resources parameter="res.ApplicationResources"/> と設定して、ApplicationResourcesファイルの階層も間違っていないのですが。 どうやら、ローカルサーバーのApplicationResourcesを見ずに、ビルドした ローカルの階層を見ているようで、こちらに設定するとメッセージは取得出来ます。 Tomcat 5.0 Struts1.1 を使用しています。 何か他に設定が必要なのでしょうか? どなたかお教えいただけないでしょうか? m(_ _)m
>どうやら、ローカルサーバーのApplicationResourcesを見ずに、ビルドした >ローカルの階層を見ているようで、こちらに設定するとメッセージは取得出来ます。 よくワカンネ
srcじゃなくてclassesフォルダのファイル見てるってこと? それだとそれで正しい挙動だと思う。
542 :
nobodyさん :04/10/10 23:48:18 ID:d05ou0eX
上司にStrutsが現在における最高のMVCモデルフレームワーク(Webアプリにおいて)だと言われ、本を渡されたんですが本当ですか?
>>542 賛否両論だが仕事でJavaでwebやるならとりあえず覚えておけ。
Java-webフレームワークの中では最高に普及していることは間違いない。
モノとしてはTapestryやらWebWork2の方がよさげだね。
>>544 俺もそう思うけど、仕事で使うなら普及してるのが一番だしね。
しょうがないね。
SpringやらSeasar2と一緒に使えば、StrutsでもWebWork2の利点みたいなことはできるわけだからねぇ。 あんまり末端の層でブアツイフレームワークは必要ない気がする。
何が最高だか聞いてみたら? 普及度? シンプルさ? 軽量さ? 機能? 脳内知識? 2位と3位のフレームワークも上げて欲しい。
Struts+Seasar2とかHibernateとかでもうしばらく頑張る。 その後JSFに以降。
Struts-facesでいいんじゃねぇ?
550 :
542 :04/10/11 22:46:32 ID:1ye9esf4
ええ?そうなんですか?いろいろあるんですね〜。ありがとうございます。でもどうせ勉強するなら最高の組み合わせを考えてるんですけど、結論出ませんかね?自分としては仕事で使うので普及率で決めたいんですが
普及率で決めるならSeasar2は使えないな。
「普及度」の「最高」だったら、struts+hibernateかな? 商用のWebLogicとかWebSpなんとかの方かな?
Struts + Hibernate + Spring だろうね。
その組み合わせっていいの?
Strutsを使って開発する場合、セッション管理ってどうやってますか?
>>555 デフォでフォーム名のセッション変数作られまくりだからイヤってこと?
557 :
555 :04/10/13 17:20:59 ID:???
>>556 いえ、もしStrutsがセッション管理機能を持ってるんなら
そっち使いたいなぁって思っただけです。
Struts初心者なもんで。。。
>>557 セッション管理なんて、sessionにほりこむだけじゃん。
わざわざStrutsにやらせんでも。
ってか、何やらせたいん?
Servletの低レベルなセッション変数管理ではなくて、 もっとアプリ寄りの高級なセッション管理ってことかな? そういうのなら残念ながらない。
560 :
555 :04/10/13 19:17:18 ID:???
>>559 さんのおっしゃるとおりです。
そうですか、そういう管理機能は持ってないんですね。。。
今までどおりsession.getAttribute()でがんばります。ありがとうございました。
具体的に、なにがやりたいん?
562 :
542 :04/10/15 16:31:49 ID:yJKQCGu4
実は私ずっとJAVAでソフト開発してたんですが、この度Webアプリ開発なる部署に転属になりまして、質問させていただいた次第でございます。 で、いきなりstrutsの本を渡されたんですが、読んでるとJSPやサーブレットのことを知らないとまずいですね、多分当たり前な話なんでしょうが もうびっくりして別の書籍買ってきました。JSPとサーブレットに関しての本です。すると今度はXMLやらXSLTやらDOMやら出てきましたので それも購入して読みあさった結果「これは腰を据えて取り組まなきゃいかんのでは?上司が言うように簡単にはいかん。」と思いました。 そこで質問なんですが、Webアプリ開発担当になるためには、JSP/サーブレット→XML/XSLT/DOM→strutsというような勉強の順番でいいですかね? 私は恥ずかしながらJAVA歴1年で去年1年間とある予約システム(店頭で店員がいじるソフト)の開発しかやったことありません。 オブジェクト指向はわかりますが、ネットワークアプリの開発もしたことありません。サーブレットは簡単そうなんですが、Web関係の技術は無知です。 どうなんでしょう?それともこの異動はもしかしてリストラの前兆ですかね?入社1年目にして?ぎゃって感じです・・・
563 :
542 :04/10/15 16:40:48 ID:yJKQCGu4
え〜ちなみに上司や同僚は忙しいらしくて取り合ってくれません。Web開発の部署は東京にあるんで 岡山から先月引っ越してきました。なんだか前の部署(企業向けアプリ)の方がUMLの段階から ノンキで仲良くやってたんですが、ここでは皆無口でPCに向かったまま、話し掛けると無視されます。 UMLも他の部署がしてるみたいで、ここの人はみんななんか機械やロボットのようです。 私はそんな片隅で自習です・・・他にも同じような人が3人いるんですが、みんな「??」状態です。 やばいですかね?業界のこともよくわからんですし、前の雰囲気が当たり前だと思ってたし 独学でやる気はあるんですが、どこから手をつければいいかわかんなくて・・・
>>564 ドゾー
Webアプリ開発担当になるためには、JSP/サーブレット→XML/XSLT/DOM→strutsというような勉強の順番でいいですか
XML関係はステップとして位置付けず必要なとき平行してやれば十分では。
それよりWebアプリ特有の設計をなんとかして学ぶ。Struts本くれたのもざっと
全体見渡せってことじゃないかと。しかしJava歴一年で「ずっとJAVAでソフト開発してきた」とは
大きく出たな。
>>565 まだ横に長い
XMLとかXSLTとかDOMは、本格的に必要になればやればいいだけ。 そうじゃなければ別にイラン。 例えばstrutsは設定ファイルがxmlなだけで、別にxmlの知識が要るわけじゃないし。
568 :
542 :04/10/15 21:35:15 ID:yJKQCGu4
>>564 すいません。長々と書いてしまいまして。
>しかしJava歴一年で「ずっとJAVAでソフト開発してきた」とは大きく出たな。
すいません。偉そうに言ってしまいました。「1年しか」ですね^^;
>>566 >>567 ご返答ありがとうございます。勉強方法がわかってとても安心しました。
とりあえずJSP/サーブレット→strutsという風に勉強します。
まず職場に花瓶を設置しろ。寒いチームは成功しない。 割と派手目だかすぐに枯れたりしないの花を買って生ける。 これだけでけっこう雰囲気が変わる。 しかし毎回買ってくるのは金がかかるし、ある日出勤したら倉庫に移動されてたりする。 だがこれで諦めているようではいけない。あくまでこれはイントロにすぎない。 次に持っていくのは植木鉢だ。今度は生けるのではなく本格的に植えてみよう。 前は花だった。香りもあったわけだ。それなりにインパクトがあるから皆それとなく気にかけていたはずだ。 今度は何がいいだろうか。不意をついて芝生や猫草などどうだろうか。何が生えるかな?などと 思って楽しみにしていると、もはやそれ以上何も生えない。これを気づかれないように少しずつ増やす。 そうやってある程度土壌が確保できたら本命の野菜を植える。大麻は駄目だ。葉ものが欲しければ七草程度にする。 そうするとだんだん森の動物が来るようになる。熊も来る。だんだん川も流れてくる。 こうやって大自然のなかに身をおくことで誰もが癒されてくる。誰かに優しくしたくなる。 とにかく職場の雰囲気に合わせては駄目だ。きっかけはたった一つの花でも気がつけば ネイチャーだろ?こうなるともう自給できる。会社がなくなっても全然問題ない。そうだろ?誰か同意してくれよ、なあ。
その職場にかわいい女はいるのか? いなければ殺伐とするのは当然だ
ウホッすればいいじゃん
>>570 会議にはお茶とお菓子を用意しろ、というXPの真髄に近いものがあるな
574 :
542 :04/10/18 22:01:38 ID:V0c+FM4A
やっぱ雰囲気って大事ですよね?女の子や花など一切ありません。 勉強のほうはお蔭様で進んでおります。 意外とスルスル頭に入るのでそんなに悩まなくても良さそうです。 みなさんありがとうございました。 あとコンテンツマネジメントシステムに興味あって 今Zopeとかも見ています。でもこれパイソンですね。 JAVAでないのかな〜・・・探してるが出てこない・・・
575 :
542 :04/10/19 01:40:15 ID:TaQwkqrU
見つけました。Cocoon2ってのがいいらしいようですね。 ちょっといじってみます。ではでは、失礼しました。
・・・「Java CMS」で検索すると、ごろごろ出てくるわけだが。
lenya, Jetspeed, Kvasir/Sora, Daisy, ....
578 :
nobodyさん :04/10/19 18:48:32 ID:biz4bNlU
勉強中なんですが、Actionクラスも作って、successを返したらJSPページ にforwardするように設定したつもりが、JSPのページがまったく表示されません。 すぐ思いつく原因などがあれば教えてもらえませんか?ソースには以下のように 表示されています。 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <HTML><HEAD> <META http-equiv=Content-Type content="text/html; charset=utf-8"></HEAD> <BODY></BODY></HTML> エラーメッセージも出ないので何が原因なのかまったくわかりません・・・。
580 :
nobodyさん :04/10/19 19:28:16 ID:biz4bNlU
>>579 struts-config.xmlは以下のような感じです。InitUserInfoで前処理を
して、reguserinfo.jspを呼び出したいです。
<action-mappings>
<action
path="/InitRegUserInfo"
type="actions.InitRegUserInfo">
<forward name="success" path="/pages/userinfo/reguserinfo.jsp" />
</action>
</action-mappings>
>>578 > Actionクラスも作って、successを返したらJSPページ
> にforwardするように設定したつもりが、
つもりだから。
582 :
578 :04/10/19 19:48:00 ID:???
自己解決しました。いろいろ見てたらactionクラスの HttpServletRequest requestとするべきところが HttpServlet requestになってました。 これで半日悩んだおれって馬鹿だと痛感しました。これから進めそうなの でがんばります。 それにしてもエラーメッセージが出てくれないミスってきついですね。
>>582 J2SE5使って、executeメソッドの前に@Override付けろ。
ちゃんと検出してくれる。
ただしXDocletが使えなくなる罠。
584 :
nobodyさん :04/10/19 22:43:54 ID:qwXtDXVh
585 :
uncorrelated :04/10/20 11:08:39 ID:OHS9yskl
笑った
じゃあ、オレも笑った。
だったら、オレも笑った。
でも、オレは笑った。
にもかかわらず、オレも笑った。
しかも、オレまで笑った
なかんずく、オレは笑った。
すべからく、オレと笑った。
嵐のように笑った。
そしてちょっとだけ泣いた。
ネタスレ化ΣΣ(゚д゚lll)
FormBeanをその都度作るバージョンのStrutsだとdoFilter()みたいなメソッドの中でEncoding処理を 行っていましたが、 FormBeanをいちいちコーディングしなくてもいいバージョンのStruts(1.1以降のバージョン?)で 文字列のエンコーディングとかはstruts-config.xmlの中で設定とかはできるのでしょうか?
>>598 そんなときは、笑って悲しみをふっとばせ!
600 :
598 :04/10/21 13:53:19 ID:???
訂正 ×:設定とかはできるのでしょうか? ○:設定できるのでしょうか?
そんなもん、StrutsのしくみではなくServlet2.3のフィルターでやれ。 それと、FormBeanはいちいち作るべき。 EclipseやNetBeansその他のツールでセッター・ゲッターは自動生成できる それに比べればxmlで書くほうがめんどうで、メリットもない。
>>601 >それに比べればxmlで書くほうがめんどうで、メリットもない。
そうでもないでしょ
setter&getterは確かに自動生成できるかもしれんが
XML設定だけでformBeanが管理できるstruts1.1の方が断然管理しやすい
>>598 エンコーディングはTomcatについてるSetCharacterEncodingFilter.javaを使うのが普通かも(違うかも)
使い方は
>>601 の言うとおりweb.xmlにfilterの設定を追加して、すべてのリクエストにマッチさせればOKかな。
サンプルはウェブに転がってると思う(Tomcatにも付いてる)
ActionFormは私も必ずクラスを作る。 DynaActionFormはTypeSafeじゃないから、そのツケがそのうち回ってくると思う。
Struts-config.xmlはXDocletに任せる
>>601 >それと、FormBeanはいちいち作るべき。
>EclipseやNetBeansその他のツールでセッター・ゲッターは自動生成できる
>それに比べればxmlで書くほうがめんどうで、メリットもない。
考え方が古いな。
まあ、それで本当にDynaBean使うより工数が減るのなら、逆に大したもんだ。
>>604 そういうポリシーがあって、あえてFormBean作るのなら問題はないけどね。
>>601 みたいな「俺はこっちの方が慣れてるんだ」的な理由ではどうもね。
>>606 工数減ると思うよ。
Dyna使うとプロパティ名やプロパティの型がコンパイル時にチェックできないから
テストやデバッグで余分な工数がかかるのは容易に想像できる。
DynaだとXDocletでのvalidator.xmlの自動生成にも対応できないし。
考え方が古いのは606じゃないの?Struts1.1b2の頃(約2年前)には
606みたいなこと言う人はたくさんいたけど。
コーダの人から見たら FormBean なんてステップ数稼ぎにちょうどいいんじゃないの? どうも無駄なコードを沢山書いているように見えてしょうがない。
610 :
601 :04/10/21 23:39:16 ID:???
Bean作った方が、いろいろなツールつかえるからね。 struts-config.xmlとかvalidator.xmlはXDocletが生成してくれるから、管理はBean.javaだけでいいし。
どっちでもできるんだから好きにやればいいんじゃないの? これが最強とか最高とかはないだろ。 どっちにもメリット・デメリットはある。 ム板のこのテの議論はどれもリスキーシフトまっしぐらだな。 0か1かハッキリしなきゃ死ぬのか。そんなに二進数が好きか。
>>609 ステップ数という概念をオブジェクト指向言語に持ち込む時点でアタマ相当古い&堅いね。アンタ。
インタフェースと実装を分ける設計とか抽象クラスを作成するのもステップ数稼ぎの無駄なコードとか言われたりしてw
>>612 皮肉もわからないほどヤバイのかアンタは
>>611 自分の情勢が不利になると一般論を持ち出すんですね。
XDocletが現れて、DynaFormBeanのメリットはほとんどなくなって、デメリットがめだつようになったんだけどね。
じゃーFormBeanの勝ちでいいから、 もっと役に立つ話でも書いてくれ。 こういう議論は飽きるほど見てきたからもう十分。
役に立たない話 株ロボコンテストのサイトはStrutsで動いてる
>>615 自分に不利な結論がでると、役に立たない話だったことになるんですね。
しかも、勝ち負けの話じゃない、といいながら「勝ちでいいから」と。
0か1かハッキリしなきゃ死ぬのは自分のことじゃないか。
2つの手法があって、どっちがいいのかという話は、宗教論にならない限りは役に立つと思うんだけどね。
>>617 じゃーさー、どっちでもいいから他の話しようや。
ぐだぐだ続けてても結論なんて出ねーんだろ?
誰か他のネタふれ!
Strutsって支柱って意味なんだってね。
結論:XDocletの出現でDynaFormBeanの役割は終わり
ちょっと前までストラトスだと思ってた
そもそも有益な話が出来るなら叩きに回れるほうに付いて自尊心を満たすような真似はしとらん。
XDocletを使わずにDynaFormBean便利〜って思ってたヤツには有益だったんじゃねぇ?
結局その話しかねーのかよ
無理やり話題だす必要もないじゃん。
あとは、IDEの普及がDynaの存在価値を消したとも言えるね。 みんながDyna、ダイナと騒いでいた2年前と今ではIDEの普及率に大きな開きがある。 アクセサを書かなくていい、というメリットは現在では無いに等しくなった。 極論すれば、EclipseがDynaFormBeanの存在価値を消した、ということか。
XDocletの方が影響でかいと思う。 struts-config編集ができるだけのStrutsツールも無用になったし。 ま、「時の流れが」ってことだね。
Apache+Tomcat+Eclipseな人がわざわざXDocletなんて使ってんの・・・?
??? どこにXDocletを使わない理由が?
630 :
628 :04/10/22 10:23:23 ID:???
>>629 いや、正直使ったことなくて一通りサラッと調べてみたんだけど
俺にはメリットが理解できなかったもんで
XDoc童貞な俺にやさしい解説おながいしますエロい人
>>630 XDocletの利点
・xxx.javaだけをいじればいい
struts-config.xmlやらvalidator.xmlを記述する必要がない。
・クラス名の記述が必要ない
FQNを正確に入力するのは結構めんどくさい。
・複数人で同時にstruts-config.xmlをメンテするときの問題が少なくなる。
CVS使ったとしても、コンフリクトしたときは手作業
これが一番のメリット。
デメリット
・最新に即時対応しない
けっこう困る。
いまでも正式版は1.1まで。
1.2が使いたければXDoclet1.2RCを使う。
・struts-configの知識が必要ないわけはない
・集中管理ができなくなる。
でも、集中管理って必要?
・antが必要
ま、Tomcatで開発するならコンテキストの再起動するのにAnt使った方が便利だし。
632 :
628 :04/10/22 11:19:10 ID:???
>>631 うほっ
アリガタヤァ
具体的な導入方法もキボンヌ(*´Д`)クレクレ厨でスマソ
Antの準備はやっておくとして。 XDocletはどっかに解凍。 <target name="xdoclet.struts"> <taskdef classname="xdoclet.modules.web.WebDocletTask" name="webdoclet"> <classpath> <fileset dir="${dir.xdoclet}/lib" includes="*.jar"/> <fileset dir="${dir.tomcat}/common/lib" includes="*.jar"/> <fileset dir="${dir.web}/WEB-INF/lib" includes="*.jar"/> <pathelement path="${dir.web}/WEB-INF/classes"/> </classpath> </taskdef> <webdoclet destdir="${dir.src}" excludedtags="@version, @author, @todo" force="true" mergedir="${dir.merge}" verbose="false"> <fileset dir="${dir.src}"> <include name="**/*.java"/> </fileset> <deploymentdescriptor destdir="${dir.web}/WEB-INF" servletspec="2.4"/> <strutsconfigxml destdir="${dir.web}/WEB-INF" version="1.2"/> <strutsvalidationxml destdir="${dir.web}/WEB-INF"/> </webdoclet> </target> こんな感じのスクリプト動かす。 dir.xdoclet XDocletを解凍したところ dir.tomcat Tomcatのベースディレクトリ dir.src ソースの場所 dir.merge マージファイルの場所 dir.web 生成先 version="1.2"とかservletspec="2.4"が使えるのはXDoclet1.2RCからだから、どっかから拾ってきやがれ。 ム板のXDocletスレへでも逝け。 あとはググれ。
XDocletのことぐぐってみたけどいまいちつかめん(´・ω・`) 理解できればメリットがわかるんだろうけど漏れにはむりぽ_| ̄|○
Actionとかに
/**
* @struts.action
* name="inputForm"
* path="/input"
* scope="request"
* input="/input.jsp"
* validate="true"
* @struts.action-forward
* name="success"
* path="/index.jsp"
*/
public class InputAction extends Action {
みたいな感じで書いて、あとは
>>633 のantスクリプト走らせるだけ。
この辺読んでみ tp://www.itmedia.co.jp/enterprise/0404/26/epn01.html
iterateタグの中でcheckboxタグを使い、 チェックボックスを各行の先頭につける一覧を表示しているのですが、 Actionの中でcheckboxの選択有無の判定がうまくいきません。 今はFormの中でチェックボックスプロパティを配列形式で宣言していますが、 選択したチェックボックス分のvalue値しか配列に格納されず、 配列の長さから「いくつチェックボックスを選択したか」しか判定できません。 チェックされないものは排除されてしまいます。 各行でチェックされたものとされないものの判定をする いい方法はありませんでしょうか。 なお、JavaScriptで選択されてないチェックボックスのValueに 何かしらの値をセットして、選択されたものとの区別を測るという方法以外で。 JSPとForm,ActionFormの中でできる判定方法はないでしょうか?
postされないんだから、元の一覧をどっかから持ってきて比較するしかないと思う
<html:multibox>
641 :
638 :04/10/24 11:10:44 ID:???
自己解決しました。
各行のFormを、それ自身のFormに配列形式で格納していくという方法でできました。
Form配列から一行分ずつのFormを取り出し、チェックボックスを判定。
各行のFormに含まれるチェックボックスのProperty変数は配列形式ではないので、
選択されていなくても変数のデフォルト値で判定可能というわけです。
>>640 multiboxも調べてみましたが、
チェックボックス以外の機能も含めてプログラム全体として考えると
自分の意図するものと少しずれていたので、今回はその方法はとりませんでしたが、
有益な情報サンクスです。
642 :
nobodyさん :04/11/08 00:14:18 ID:Xgp3rIIQ
<html:select>タグで選択可能となっている要素全ての情報をActionサブクラスで 取得したいと考えているのですが、何方かアドバイスいただけませんでしょうか? 選択している要素の取得方法はなんとなく分かるのですが、選択可能な要素を全て取得する方法が思いつきません。 出来ればJavaScriptは使わない方向で考えているのですが... よろしくお願いいたします。
選択可能な要素を全て送信する方法をまず考えろ。
>>642 なんかよくわかんないが…
<select 〜>
<option value="value1">str1</option>
<option value="value2">str2</option>
…
</select>
の(value1,str1),(value2,str2)…みたいのが欲しいって事?
だとすれば、そもそも、そのフォームをVする際のMにその情報が有るでしょ。
それにアクセスすれば良いんじゃないの?
>>643 JavaScriptでhiddenタイプの変数として、カンマとかで値を結合して渡すとかは
思いついたのですが、もっと楽な方法があるだろう...と。
>>644 レス、ありがとうございます。
<SELECT>の要素は画面で追加・削除が行えるようにJavaScriptで組んでいるため、
<OPTION>の内容や数は変わることが前提となっているのです。
先ほど645で書いた方法程度であれば何となく考えているのですが、
何かございませんでしょうか?
JavaScript系のスレで聞いたほうがいいんじゃない?
Struts1.02でテキストボックスを含む一覧形式の登録/更新画面を作成しています。 <logic:iterate〜で、Beanに設定したテキストボックスの初期値は、正しく表示されているのですが、 テキストボックスの値を変えてsubmitしても、Actionで入力値が取得できません。 なにか思いつく原因などがあれば教えてもらえないでしょうか? よろしくお願いします。
649 :
nobodyさん :04/11/10 14:33:28 ID:qbk8LNSW
>>641 よろしかったらもうすこし具体的にやり方を
教えてもらえないでしょうか。
今同じような事をやってつまっております。
>>648 やり方は2種類。
前提として、BeanにString id、String nameっていうフィールドがあるとして。
1. フィールドの配列で受ける。
<logic:iterate id="bean" 略>
<html:text name="bean" property="id"/>
<html:text name="bean" property="name"/>
</logic:iterate>
こういうJSPを書いて、この値が入るActionFormのフィールドに
String[] id と String[] name、およびそれぞれのアクセサメソッドを
用意しておけば、上から順番に値が格納される。
2. Beanの配列で受ける
<logic:iterate id="bean" 略>
<html:text name="bean" property="id"indexed="true"/>
<html:text name="bean" property="name"indexed="true"/>
</logic:iterate>
こう書いておいて、ActionFormにBeanの配列(もしくはList)と、
setBean(int index) を用意しておけば、Beanの配列として値が入る。
651 :
nobodyさん :04/11/11 05:13:30 ID:hiuJkdtg
JSPは、タグを記述するのがどうも面倒なので、 strutsのViewの部分をVelocityで実装してみるのは 有効なんですかね?
Velocityでも面倒さは変わらないんじゃないの? JSPとVelocityの違いは、XMLタグで制御構造を書くかそうではないかだけかと。 オーサリングツールが使いにくいとかブラウザでのプレビューがやりにくいとかじゃなければ、JSPの方がいいと思われ。 タグファイルとか考えると、JSPの方が便利だし。
653 :
649 :04/11/12 14:00:22 ID:???
html:multibox を使用して目的は達成できました。 やり方としてはデータ用に作成したbeanの中に indexを持たせてsubmit時にindexの値の配列を取得して その他フィールドの値をindexをキーにして取得しています。 他にいい方法があれば教えてください。 やりたいことは、下記の通りです。 検索条件に従ってデータベース検索して結果を一覧表示する。 この際、各行にチェックボックスを作成する。 submit時にチェックボックスにチェックが入ったデータのみを 対象にある処理を行なう。
validator で入力チェックをして、エラーと判断された際のメッセージに {0} が含まれている場合に その {0} を入力された文字列に置き換える方法はないでしょうか? たとえば、「入力された値は {0} ですが、その値は無効です。」とかいう メッセージを表示したいのです。 書籍や Web サイトなどでは、固定文字列に置き換える方法ばかりしか見かけないので・・・。
>>654 試してないし君のValidatorのコードもわからないので適当書く。
たぶんActionErrors(ActionMessages)に
ActionError(ActionMessage)を追加してるところがあるとおもうけど、
後者は特にResources.getActionError()で取得する必要はなくて
ActionError(ActionMessage)でさえあればいい。
>>655 Action任せで、ActionErrorの存在すら知らないに7抜歯
validator.xml任せなんだとオモ
658 :
654 :04/11/23 15:55:19 ID:???
確かに、DynaValidatorForm を使っており、validator.xml 任せになっていますが それでは不可能、ということなんですね。 ありがとうございます。
△△さらにStrutsの良さを教えて下さいSession3のスレで、 ActionForm の代わりにPOJOを用いる方法を書いてるが、 こっちのスレの住人は使ってるのかな?
頼むからこれから新規で作る香具師はDynaActionFormは使わないでくれ。 保守する身にもなってくれ。
DynaActionForm、なんのメリットもないしね。
validator.xml だけだとキツい。
>>664 > DynaValidatorActionだといいの?
しらん。
普通にActionForm使う。
>>665 いちいち、プロパティを定義するのはめんどくさくない
>>666 フィールド定義して、右クリックしてツールにセッターゲッター生成してもらって、XDocletタグを書くだけ。
あまりめんどくさくない。
XDoclet入れなきゃならないし いろいろそれ用の設定も必要だし 前準備だけでめんどくさいです
まあ、ひとつふたつ試しにActionForm作るだけなら、前準備がめんどくさいね。 それなら、Struts使う必要もあまりなさそうだけど。
>>670 試しでActionForm作るのなら、Dyna系が楽かと。
試しで作るのならMap backed ActionFormのほうが楽だ
xdocletで複数のアクションクラスを違う名前/パラメータで使いまわすのって できますか? @struts.actionと@struts.action-forwardを一つのクラスに複数個書いてみたら、 actionが複数できることは確認できたのですが、action-forwardが両方のactionの中に 入ってしまい、期待した動作はしませんでした。 みなさん、こういう場合ってどうしてますか? それとも、一つのアクションクラスを使い回すってのがマズいんでしょうか?
>>673 マスタメンテとか一覧とか、共通のActionを使うことは多いと思う。
その場合は手書きになるね。
基本的にXDocletはシングルトンなクラスとValueObjectにしか適用できない気がする。
おいおい、アクションをその数だけ作って ビジネスロジックだけ分離させてそれを各アクションで呼べばいいだけだろ? もしかしてActionクラスに処理べた書きか? おまえらStrutsのこと全然わかってなさすぎ @ITの山田と同レベルだな
世の中のことをわかってない
>>675 は、しょうかん以下ってことですか?
根拠のない負け惜しみキター ひょっとしてアクションクラスはクラスはModelだと思ってるの? そうじゃなきゃそんな発言しないよね。 Controllerだと知ってたらそんな発言しないよね。
まあ、所詮Webプログラミング板なんてこの程度だろう
679 :
673 :04/12/12 01:17:05 ID:???
元質問者です。 今回は結局struts-actions.xmlでマージすることになったんですが、やはりアクションの使い回しはしないものなのでしょうか。 サーバサイドは初めてで、最近サーバサイドでのMVCの定義とクライアントでのMVC(というよりもプラットホーム準拠の作法)との差を感じることが多いです。 ロジックはModelに入るものということなのでしょうか。 僕の認識だと M: データ構造 V: プレゼンテーション C: データ操作のロジック なので、同じロジックを複数の場所から実行して、別の結果ページに遷移したい時にはアクションを使いまわすべきか、と思って上の質問に至ったわけなんですが... ちなみに、再利用性には気を配っているつもりですが、基本的にアクションクラスに処理べた書きです。 こういうことってStrutsやWebアプリの作法に反するっていうことなんですかね?
>>679 君の認識はどうでもいいからさ、ひとかけらでも疑問を持ったならちゃんと調べてくれよ。
ttp://e-words.jp/w/MVC.html メインの処理はModelに実装し、Modelは画面出力などは行なわない。処理結果はViewに渡され、画面表示などが行なわれる。ユーザからの入力はControllerが受け取り、何らかの処理が必要な場合はModelに依頼し、出力が必要な場合はViewに依頼する。
知らない用語を自分用に解釈して使うことに何で疑問を持たないのかね。
さすがWebProg
>>679 Strutsは「MVC」の「C」だけを受け持つフレームワークだ。
それ以外のことはサポートしてくれない。
基本的にはViewもModelも自力で何とかする必要がある。
ここまで書けばわかるだろ?
>>679 > ちなみに、再利用性には気を配っているつもりですが、基本的にアクションクラスに処理べた書きです。
アクションクラスにロジックを書いてはいけない理由はないし、それはアプリケーションの規模や性質によるから一概にいえるものではない。
MVCという分け方があるとしても、CにMを併用するモデルを採用しようが、それは設計者の自由。
別のクラスにしないといけない理由はない。
メンテナンス性などを考えて最適であると判断できるならどうでもいい。
っていうか、処理するテーブルと入力フォームだけが違う場合にActionを共通化するようなことは普通にある。
>>683 アクションクラスにべた書きの時点で、再利用性には気を配っていないと言える。
そもそも、基本的にControllerは受け渡しのみを行ういわば使い捨てであり、それを再利用しようとする方が間違い。
あくまでも処理はModelで行う。
>MVCという分け方があるとしても、CにMを併用するモデルを採用しようが、それは設計者の自由。
これはMVCではない。MVCを無視して
「Strutsを使ってとにかくアプリケーションを作る」ことに専念するつもりなら当然何をやろうが自由だが
MVCを意識する以上は間違い。
>っていうか、処理するテーブルと入力フォームだけが違う場合にActionを共通化するようなことは普通にある。
自分の周りが全て正しいのか?
何も考えず周りに流されてるだけで、ちゃんとStrutsやMVCモデルについて勉強してない証拠だな。
それは単なるローカルルールだ。
要するにおまえは井の中の蛙だ。
つーか他の人はみんなxdoclet普通に使ってて、
自分だけうまい具合に自動生成できない時点で
「俺のプログラムはどこかアブノーマルな部分があるのかな」
とか気にしたんだろ?
それで
>>673 に書いたんだろ?
で、それに対する答えが「確かに君のやり方はアブノーマルな部分があるよ」だったわけだよ。
質問に対する回答を貰っておいて、それでもなぜ納得しないんだ?
とりあえずここでも読んどけ htp://struts.apache.org/userGuide/building_controller.html#action_design_guide って、上でも出てるし。 同じようなやりとりが定期的に出ている証拠だな
>>684 継承してちょっとした変更するより、同じクラスでパラメータによってちょっと動きを変えるほうがいいと思うが。
Actionなんて、再利用できるなら再利用した方がいいとおもうのだが。
> 要するにおまえは井の中の蛙だ。
自分がどんな井戸の中にいるのか把握してないみたい。
>>688 頭でっかちで頑固なやつと、基礎は知っていた上で多少は融通が利くやつの違い。
そのせいでxdocletが使えなくなるほうがよっぽど不便だが。
このスレには山田某がいっぱいですね。
っていうか、別にActionにロジックを書いても当然動くけど、
(実際、ビジネスロジックと分離するかしないかの違いだし)
そういった使い方をするなら
>>684 にあるとおりMVCを持ち出すべきではないよね。
「CにMを併用するモデル」が既にMVCじゃないんだから。
入力パラメータが同じなのでActionFormを使い回したい、みたいな事はあるけどね。
>>687 どこから継承なんて言葉が出てきたんだ?
意味がわからん。
おまえの頭の中ではどんな作りになっているんだ?
しょせんWebプログ(ry
>689 MVCモデルは、意識して厳密にやろうとしないと>683のようにすぐに 曖昧になって混ざってしまいがちだから、頑固とは違う。 少なくとも>684の書いていることはまともだし、 >「Strutsを使ってとにかくアプリケーションを作る」ことに専念するつもりなら当然何をやろうが自由」 とあるとおり、「絶対にActionにロジックを書くな」と書いているわけでもない。 単にMVCモデルには則してないと書いているだけ。 こういうのは頭でっかちで頑固、とは言わないよ。 あと「基礎は知っていた上で多少は融通が利く」というより単なる「妥協」だね、この場合。
というか、Actionの共有とMVCと、どう関係があるのかが一番の謎。
ひとつのActionで複数のページに対応できるなら、そうするべきだし、XDoclet使うのもmerge使えばいいし。 XDocletは基本的にシングルトンなクラスにしか便利に使えないし。 XDocletでうまく対応できないからといって、Struts側の設計としておかしいと考えるのは筋違い。
>>694 もともとActionがControllerとして提供されているのに、
Modelとしても使おうとしてるからだろ。
いやマジで、こんな奴らばっかりなら山田もあそこまで叩かれなかっただろうな。 あの議論はいったい何だったんだという感じ。 せっかく記事を版管理無しでこっそり修正したのに 意味無かったね山田さん
>>696 Actionを共有することが、Modelとしても使おうとしていることになぜつながるのかな?
>>697 まあ、山田の場合はデータソースんとこでもやらかしてた訳だが。
StrutsでいうMVCって M=ActionForm V=JSP C=Action のことじゃなかったの?
マジレスすると、 MVCっていっても、Vの中にもMVC、Cの中にもMVC。 見る尺度によって、どこのレベルでもMVC.
Strutsの場合はプレゼンテーションの中のMVCだからね。
703 :
nobodyさん :04/12/15 18:26:48 ID:6uCmJkm4
さらに言えば、ActionでもActionFormでもソース見れば分かるけど、中身はMVCでできてるでしょ。
どんどん意味が拡大解釈されていく、かわいそうなMVC
ところで、1つのActionクラスを複数のpathで共有することが、どうしてActionにModelを持たせてることになるんだろう? 意味不明だ。 使いまわせるActionなんて、いくらでも使いまわせばいいのに。
707 :
704 :04/12/16 21:37:33 ID:???
ごめん。勘違いだ。
M:データベースサーバ(mysql) V:Webサーバ(apache) C:アプリケーションサーバ(tomcat)
だれか、708を病院につれてってあげれ
M ビジネス V 株価 C システム
株価からシステムを介してビジネスをコントロールするのか。
システムを介してビジネスを行った結果が株価として見える
そのCはコンバーターのCということか。
714 :
nobodyさん :04/12/20 08:48:06 ID:scgdz6H2
すいません。12/17に【初心者】Java質問・相談スレッド58【大歓迎】の665で質問させていただいたのですが、 返答が無かったのでこちらのスレで質問させてください。 struts & jspで<logic:iterate>を使用するのに、以下のように<% 〜 %>スクリプトレットで取得する方法はできたのですが、 <% 〜 %>を使わないでstruts-config.xmlを利用して取得するにはどうせれば良いのでしょうか? ---jspコード--- <ul> <%-- ↓これを埋め込みたく無い --%> <% request.setAttribute("bean",new SampleBean()); %> <logic:iterate id="seihin" name="bean" property="list"> <li><bean:write name="seihin" property="process"/></li> </logic:iterate> </ul> --jspコードココまで--- ---SampleBean.java--- public class SampleBean { public java.util.List getList(){ java.util.List list = new java.util.LinkedList(); return(list); } } ---SampleBean.javaここまで---
>>714 > <% request.setAttribute("bean",new SampleBean()); %>
こんなのはActionでやる仕事。JSPに埋め込むな。
struts-config.xml も無関係だろ。
>>714 その前に、どんな手段を用いればstruts-config.xmlを利用して値を取得できるのか、教えて欲しい。
717 :
nobodyさん :04/12/20 10:55:34 ID:scgdz6H2
言い方がおかしくてすいません。 jspに、<logic:iterate id="seihin" name="bean" property="list">と書いたとすると、 struts-config.xmlからname(bean)を検索して、それに関連付けられたアクションを実行するのですよね?
>>717 ちがう。
言い方だけじゃなくてStrutsの理解もおかしい。
言い方と理解の仕方は一致するからな。
logicタグなど使わずにおとなしくJSTLを使いなさい。
>>717 struts-config.xmlではなく、
JSPでいうところのrequest, session, applicationから
beanという属性名のJavaBeanを取り出す。
したがって、Action(を継承したクラス)のexecuteメソッド内で
request.setAttribute("bean", new SampleBean())みたいな形で
JavaBeanをセットするのが普通。
722 :
nobodyさん :04/12/24 18:36:13 ID:9UBZxQ+R
form内にたくさんテキスト入力フォームを作成させたいので、iterateで処理しています。 最初にこのJSPにアクセスしたときは正常にページが作成されるのですが、 formのsubmitボタンを押してアクションを発生させ、フォームの内容に不備があったらまたこのページに戻ってくるようにさせると、 iterateのnameで指定されたbeanが見つからないと、怒られてしまいます。 なぜですか?分かる方がいたらご教授願います。
723 :
722 :04/12/24 18:55:21 ID:???
すいません。事故解決できました。 setAttributeのやりかたが問題でした。 req.setAttribute("bean",配列);をコメントして、 session.setAttribute("bean",配列);にしたらできました。 public final class TestAction extends Action{ public ActionForward perform(ActionMapping mapping, ActionForm form, HttpServletRequest req, HttpServletResponse rew){ HttpSession session = req.getSession(); ActionErrors errors = new ActionErrors(); // req.setAttribute("bean",配列); session.setAttribute("bean",配列); return(mapping.findForward("success")); } }
performとか書いてある本は捨てろ。
725 :
722 :04/12/24 20:00:14 ID:9UBZxQ+R
>724 すいません。performは使わないほうが良いのですか?
>>725 performは1.0以前のメソッドで、1.2以降はメソッドそのものが消えているので。
727 :
722 :04/12/24 21:18:35 ID:???
>724さん726さん 教えていただきありがとうございます! execute()にしました。 なんだか楽しくなってきました。
728 :
nobodyさん :04/12/27 19:06:18 ID:EKbjNeu3
POIのHSSFを使用してExcelデータからArrayListオブジェクトを生成して、 それを<logic:iterate>で処理してるのですが、ブラウザで最初にアクセスしたときは正常に表示されますが、 2度目以降、以下のようなエラーが出てしまいます。 java.io.IOException: Unable to read entire block; 45 bytes read; expected 512 bytes Excelファイルから512bytesずつ読めと言うことでしょうか?
関係ないが、JSTLが使えるならiterateよりJSTLの方がいいね。
730 :
nobodyさん :05/01/06 08:29:34 ID:xG8ETHUh
perform()だと正しくページ遷移ができるのにexecute()にしたら真っ白なページになってしまうのは何故ですか?
731 :
730 :05/01/06 09:30:07 ID:xG8ETHUh
そもそもActionが起動されていないようなのですが・・・
>>731 execute() のシグニチャが間違っていて、実はオーバーライドになっていない、というオチじゃないよね?
733 :
730 :05/01/06 10:17:56 ID:xG8ETHUh
>732さん、返信ありがとうございます。 私もそれを疑ったのですが、Actionクラスのexecute()メソッドをオーバーライドしています。 execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response)
そもそも1.0使ってるとか
>>733 throws IOException, ServletException じゃなくて、
throws Exception になってる?
>>734 それもあるかもね。
736 :
730 :05/01/06 11:14:03 ID:xG8ETHUh
>734さん、>735さん、ありがとうございます。 throws IOException, ServletExceptionと書いています。 しかし throws Exceptionでもやはり結果は一緒で真っ白なページでした。 struts.jarのバージョンは1.2.4を使っています。 public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest req, HttpServletResponse rew) throws IOException, ServletException {
Actionを継承してないとか、コンテキストの再起動してないとか、struts-config書き換えてないとか、どちらにせよケアレスミスかと。 J2SE5で@Overrideつけてコンパイルするのが、一番確実だな。
738 :
730 :05/01/06 13:12:23 ID:xG8ETHUh
>737さんありがとうございます。 Actionクラスは継承してますし、Tomcatの再起動などやっているのですが、どうもうまくいきません。 初歩的な質問で大変申し訳ないのですが、perform()をexecute()にした際に struts-config.xmlを書き換える必要はありますか?
JSP内に大量にチェックボックスを作る場合、チェックボックスのリストをまとめた外部ファイルを読み込んで配列を作って <logic:iterate>で表示させることはできたのですが、 それらを今度はsubmitで送信し、受け取る場合にどれがチェックされてどれがチェックされてないかを調べて状態別の処理をしたいのですけど これは大量にあるチェックボックスのsubmit結果を配列で受け取って処理すれば良いのですか? 一つ一つ書けばそれはそれで良いのですが、あまりに大量すぎて手に負えません・・・
>>739 そう。
場合によってはインデックス付きのgetter/setterを使うべし
たびたびすいません。 大量のチェックボックスを一つの配列にまとめるには、それらを配列オブジェクトに一個一個addしていかなければダメですか? 例えば a1〜a5の5つのチェックボックスにそれぞれgetter/setterを作って、用意しておいた配列オブジェクトoに o.add(a1); o.add(a2); ・・・といった風にするしかないのでしょうか?
配列型のプロパティと 配列型を戻すgetterと 配列型を引数に取るsetterを実装するんじゃダメ?
>742-743 どうもありがとうございます。 参考にしていじってみます。
745 :
nobodyさん :05/01/11 10:27:39 ID:hbl7DHve
iterateで使用するArrayListオブジェクトを、一度生成した後はそのsession内ではそれを再利用したいのですが、 対象の配列オブジェクトのスコープをsession内有効にしてもgetXXXメソッドが読まれてしまいます。 ActionForm内にgetList01()を準備して、 一度目のActionでこのgetList01()を使用して取得はできるのですが、 二度目以降、"List01"を使用する場合は一度目で生成したオブジェクトを使用したいです。 一度setAttribute("List01",)でList01に配列オブジェクトを関連付けて、 その後のActionではsetAttribute("List01",HttpSession.getAttribute("List01"))でOKかと思ったのですが・・・ iterateタグ使用時にscope属性はsessionにしてあるのですが、どうしてもgetList01が読まれてしまいます。 <logic:iterate id="item" name="List01" property="list01" scope="session" type="xClass"> 初歩的な質問で申し訳ありませんが時間のある人が居ればご教授お願いします。
746 :
nobodyさん :05/01/11 10:50:11 ID:kArneliy
やりたい事:セレクトメニューを動的に表示したい。 たとえば、今年の西暦と+1年の西暦。 <html:select property="year"> <html:option value=""></html:option> <html:option value="2005">2005</html:option> <html:option value="2006">2006</html:option> </html:select> <% %>の中でタグを書いても当然そのまま表示されてしまいます。 どうすればできますか?
>>746 JSPを勉強することと、optionsタグあたり。
748 :
745 :05/01/11 19:38:41 ID:hbl7DHve
745です。遷移元ページAで、下記JSP記述によって配列を回せるのですが、 <logic:iterate id="checkItem" name="List01" property="list01" scope="session" type="pkg.MyClass"> ページAから遷移先ページBに遷移して、下記JSP記述ではオブジェクトは存在しているようです。(pkg.hoge@15e8aa5などのように表示される) <bean:write name="List01" scope="session"/> しかしこれを下記のように扱おうとすると、javax.servlet.ServletException: Cannot create iterator for this collectionになってしまいます。 <logic:iterate id="item" name="List01" scope="session"> getList01()は、pkg.MyClassオブジェクトを格納するArrayListオブジェクトを返します。 何かわかるかたがいたらご教授願います。
>>748 List01はCollectionでも配列でもMapでもないんじゃないの?
750 :
745 :05/01/12 08:36:26 ID:e5ml505B
>748 レスどうもありがとうございます。 List01は同じsession内でiterateを使えているArrayListオブジェクトです。 iterate自体ではscope属性でsetAttributeされたList01を探すことは可能なんですよね?
751 :
745 :05/01/12 08:56:42 ID:???
>>750 つーか、
>getList01()は、pkg.MyClassオブジェクトを格納するArrayListオブジェクトを返します。
メソッドを持つList01が、なぜArrayListなんだ?
そもそも自分で作ったクラスなんじゃないの?
753 :
745 :05/01/13 08:54:27 ID:???
>752 返信ありがとうございます。以下のようなクラスです。 //MyClassオブジェクトを格納しているArrayListオブジェクトを返り値とするgetList01()を持つクラス public ReturnIterateObjClass{ private ArrayList list01 = new ArrayList(); public ReturnIterateClass(){} public ArrayList getList01(){ ArrayList list = new ArrayList(); MyClass obj1 = new MyClass(); MyClass obj2 = new MyClass(); list.add(obj1); list.add(obj2); return list; } } で、正しいやり方なのかはわかりませんが、次のレスの方法で先程やっと解決しました。
754 :
745 :05/01/13 08:55:24 ID:???
+++ ダメだったやり方 +++++++++++++++++++++++++++++++++++++++ //JSP <logic:iterate id="id" name="List" property="list01"> //Action HttpSession session = HttpServletRequest.getSession(); ReturnIterateObjClass r = new ReturnIterateObjClass(); session.setAttribute("List",r); +++ 上手くいったやり方 +++++++++++++++++++++++++++++++++++++++ //JSP <logic:iterate id="id" name="List"> //Action HttpSession session = HttpServletRequest.getSession(); ReturnIterateObjClass r = new ReturnIterateObjClass(); if (session.getAttribute("List01") == null){ session.setAttribute("List",r.getList01()); } >749さんの言うとおり、「ダメだったやり方」で、getAttribute("List01").getClass()の結果を見たらArrayListなんかではなく、ReturnIterateObjClassでした。 みなさんのおかげで何とかまた一つ解決できました。ほんとにありがとうございました。また進めて行ってみます。
755 :
nobodyさん :05/01/23 20:12:30 ID:qsfjePjF
自宅で興味範囲でStrutsを習い始めた者です。 教えてください。 DispatchActionを基本クラスとして継承クラスを作成した場合 URI parameter属性に呼び出されるメソッドの名称を格納して callする事ができると聞きました。 parameter="method"で、URLパラメータがmethod=deleteと指定した場合 deleteという名のメソッドが実行される。みたいに。 で継承クラスにexecute()をオーバーライドした場合 delete()とexecute()とどちらもcallされるのでしょうか? どちらが先にcallされるのでしょうか?
>>755 ソースコード見れ。ソースコードは公開されているのだから。
ソースを見れば一目瞭然なのだが、
execute()をオーバーライドすると肝心の振り分け処理を
上書きしてしまうことになり、execute()の中でスーパークラスの
execute()を明示的に呼ばない限り、delete()は呼ばれない。
答えとアドバイスをありがとうございました。 ソースを見て調べるようにしますが回答頂き成る程ガッテンつきました! ありがとうございました。
習ってるなら、習ってる相手に聞け。
自習だよ
JavaWorld3月号のStruts記事は非常に良かったぞ。 脱初心者必見という感じ。
Digester便利だなぁ。
DigesterとXMLBeanてどうちがうの?
BeanUtilsも便利すぎる
まあ、便利すぎて、Strutsからは分離してしまったから、今となってはスレ違いだな。
commonsについて語るスレってないの?
767 :
nobodyさん :05/02/18 01:43:01 ID:crwium7J
すいません。助けてください。 CactusStrutsTestCsaeをやってるんですが、 VerifyFowardでmappingできないって怒られます・・・ ちゃんとstruts-configのパスはあるんですが・・・ あと、eclipseのデバッグで perform先にブレークポイントしても止まらないのです・・・ actionが呼び出されてないのでしょうか? こういうものでしょうか? 初心者なのでさっぱりわかりません・・・ よろしくです・・・
>>767 質問の要点を整理して出直せ。
> 初心者なのでさっぱりわかりません・・・
あなたは質問の初心者みたいなので、こちらもあなたの状況がさっぱりわかりません・・・
769 :
767 :05/02/18 10:27:57 ID:T6/5M4uY
すいません。出直してきました。 verifyForward("success"); の箇所で、Junitで 「Was expecting '(コンテキストルート)/WEB-INF/XXX.jsp' but it appears the Action has tried to return an ActionForward that is not mapped correctly」 とエラーが出るのです。 ちゃんとパスもあっていて、ファイルも存在しているのです。。 sturts-config.xmlは <action path="/test/login" type="xxxx.xxxx.xxx.loginAction" name="login" scope="request" validate="true" > <forward name="success" path="/WEB-INF/XXX.jsp" /> <forward name="failed" path="/XXX.jsp" /> </action> こんな感じです。 CactusStrutsTestCaseって、サーバー側にテストClassファイルを置かないと ダメなんでしょうか? AntでJunitを実行するのですが、クライアント側だけで実行できないんですかね・・? ClassファイルもBuild.xmlもサーバー側でやらないと上手くできません。 クライアントから出来るって話を聞いたんですが・・・ ブレークポイントの件はもうちょい調べてみます。 すみません、、お願いしますです。。。
770 :
767 :05/02/18 22:18:34 ID:CZcitnmH
自己レス すんません。解決しました。 executeをオーバーライドしてませんでした というか、Actionクラスを継承して 独自のXXXexecuteを使ってるのが原因でした これからすべてのActionクラスにexecuteを書いてsuperするのかと思うと・・・ お騒がせしましたー
772 :
770 :05/02/18 23:51:28 ID:KEaw0I+v
いや、普通に動かす分には execute→XXXexecuteとうまくマッピングできていて 明示的にオーバーライドする必要がなかったんです。 (代わりにXXXexecuteをオーバーライドする必要) でもTestCaseのactionPerform()では そこまで参照されず、executeを呼び出していたので Actionができなかったのが原因です Testのために、全部に明示的にexecuteを書くのが億劫で・・・
773 :
nobodyさん :05/02/21 15:43:15 ID:sN6ntzqc
JSPで表示する内容って、すべてActionFormにStringで定義するべきなんだろうか・・?
ってか、表示する内容とActionFormとは関係ないと思うが。
775 :
nobodyさん :05/02/21 17:25:49 ID:beK1sFFt
入力フォームでフィールドが複数ある場合、 validator.xmlで「全てのフィールドが未入力」だった場合に限りエラーを返したいのですが、 validator.xmlにはどのように記述すれば良いのですか? ↓これでできたら嬉しかったんですが。 <formset> <form name="SampleForm"> <field property="field1,field2,field3" depends="required"> <msg name="required" key="error.全部未入力"/> </field> </form> </formset>
validator.xml という名前のファイルは使ったことがない
777 :
775 :05/02/21 17:55:04 ID:beK1sFFt
validation.xmlでした。 すいません。
requiredif とか使えばいけるんじゃない? この場合、ActionFormの方でチェックかける方がのぞましいと思うけど。
すいません、教えてください。 部署を選ぶと選択可能な役職が出てくる、そんなページを作っているんですが、 役職名が取得できなくて困っています。 詳しくはかけないのですが、以下のようなオブジェクトを作りました。 class form{ List postList; } class post{ String id; String postName; List jobTree; } class job{ String id; String jobName; } 部署名などはpostクラスに、役職名などをjobクラスに保存。 postListに複数のpostを格納、さらにpostのjobTreeに複数のjobを格納しています。 (セッターゲッターはあると思ってください。) 一応<html:optionsCollection>を使って、部署名を取得、表示はできたのですが、 役職名を取得する方法がわかりませんでした。何か良い方法は無いでしょうか? ちなみに、部署名を変更させた際、役職も変化させる予定です。
>778 お前は動的にコソボボックスの中身を変化させたいのかと?
JavaScriptのお勉強です
782 :
775 :05/02/22 08:33:55 ID:rep4z0fe
>>778 さん、どうもありがとうございます。
requiredifでいけるかなあと思ったんですけど、やっぱり無理な気がしてしまい、質問させていただきました。
おっしゃられるとおりActionForm側で行うことにします。
ちょっと聞きたいのですけど、小規模(フォームのページ数が10ページ程度)なアプリケーションの場合、
フォーム検証処理を別ファイルであるvalidation.xmlで行うよりも
ActionFormで行うほうがわかりやすいような気がしたのですが、皆さんはどう思いますか?
柔軟さの面や保守性の部分の視点等、みなさんの意見が聞いてみたいです。
>>782 それでもValidator使った方がいいよ。保守性・再利用性が高い。
requiredifがダメなら、ルールを自作しろ。
ちなみに、Struts1.2.xではrequiredifは非推奨だ。
>783 >ちなみに、Struts1.2.xではrequiredifは非推奨だ。 おや、初耳 良ければなんで非推奨なのか教えてくり
>>784 初耳?それぐらい調べておけ。
条件指定がわかりにくいから、らしい。
Action.execute() の引数に inputForm, outputForm が無いのはおかしいと思いませんか? execute( ActionMapping mapping, ActionForm inputForm, ActionForm outputForm, HttpServletRequest req, HttpServletResponse res) みたいに。 じゃねーと、A.jsp ⇒ Action ⇒ B.jsp という画面遷移があった場合、 AとBの入力or出力項目って同じじゃねーと違和感でるよな?
要らん。邪魔。 出力オブジェクトをわざわざActionFormのサブクラスに限定する必要性がない。 Strutsは入力の処理だけしてくれればいい。
じゃ出力って、reuestにくっつけるだけ? それだとさ、JSP(V)とAction(CもしくはM)が依存しちゃうってことにならない?
791 :
nobodyさん :05/02/24 07:22:52 ID:qkldD1gK
じゃ、どおすればいいの? みんな出力用オブジェクトはどうしてるの? あ、テキストボックスに出力して、そのまま次の画面の入力項目にもなるようなやつね。
特殊な処理をするときは、特殊な処理にあわせる。
特殊だとは思えないんだが・・ 入会登録なんかは、入力画面⇒確認画面⇒保存ロジック まで、同じ form が使えるってのはたやすく理解できる。 しかしだな、Aで選択した条件で 次にでてくる画面が切り替わるっていうのはよくあることじゃない?
>>791 出力用のオブジェクトがActionFormのサブクラスである必要もないし
execute()の引数に入っていなければならない必然性も感じない。
>>793 ActionFormは、入力をパックするためだけに使え。
出力だけなら、出力項目をラップしたクラスか、マップ使え。
>787 内部処理によって違うFormを持つページに飛ばすときはどうすんだ?
798 :
787 :05/02/24 13:57:13 ID:qkldD1gK
>794-797 すまん、漏れが悪かった。 特に>797はスマンかったとしか言いようがない。痛すぎ。 ActionFormは入力用に使えという教えには従うとして、じゃ、出力時はどうすればよいのか? >797を踏まえて教えてくれ。 例) 複数ページに振り分けるActionで、振り分け先のページで表示するコンボボックスの内容(マスタ)が動的に変わる場合、 2ch的にマスタやその他のデータ類はどうやってそのページへ渡すべきなのか? # やっぱりHttpServletRequestに引っ付けるべき??
>>798 コンボボックスの選択項目なら、普通にrequest.setAttributeで問題ないと思うが。
>>799 俺もそう思う。
ひょっとしてrequest.setAttributeを1回しかしてはいけないとかいう社内ルールでもあるの?
ActionFormはpostされたものを自動的に入れるためのもので、本来は出力とは関係がない。 ただrequestスコープに入ってればそのままjspで参照できるよね、という話・・・だよね? 俺も最初このことになかなか気付かなくて混乱してた。
>801 そうそう。そういう意味です。 普通はそうしないんだ・・・ でも次のページで、違うActionにSubmitする場合、 表示時の名前と送信するための名前が違うってことにならない?
>>802 入力を受け取るためのActionFormは当然あって、表示用の方(前のページの入力)のActionFormrequest#getAttributeでアクセスすればいいんじゃね?
>803 え、なにそれ? 前のページでRequestに引っ付けたobjectって、後のページ(Action)で、getAttributeで取れるの?
>>804 AというページとBというページがあって、Aで入力した結果を基にBを表示し、またBにも入力フォームがある、というようなケースじゃないの?
というか、そういう前提の話だった。
あほか、も前ら。入力項目も出力項目も全部 Form に入れろ。 かつ Form の単位は画面ではなく 1 機能にしろ。 でスコープは session。これ最強。 明示的に request.setAttribute なんかダサいことすんな。 これを基本として、設計が美しくできるなら、画面単位に 分けれるとこは分けて request スコープにしたり、 動的コンボなどを session の属性にセットしたりすればいい。
807 :
nobodyさん :05/02/24 23:46:22 ID:qkldD1gK
>805 そうそう。そのとおり。 でも、AとBの入力フィールドは全く違う構成なわけ。 そこでgetAttirbuteが使えると、俺はカナリ楽になるはず。ってことで、今試してみてる。 はぁ・・完全弐徹目だ。 今まで簡単なパターンでしかStruts使ってなかったから、今回ちょっと苦戦中・・ しかも某社のフレームワーク(Strutsラッパ)とやらのせいで息苦しい・・。 動く状態までは作ったんだけど、どうもメンテとかMVCとか今後のことを意識すると 自然と何度も設計しなおしてるし・・org まぁ単純に自分の技術不足と調査不足のせいだと分かってるから、すげー腹が立つ・・
808 :
807 :05/02/24 23:49:04 ID:???
>806 で、しかも属性は全てStringにしろとか言うんだろ?
>>808 属性は全部Stringはしょうがないよ。
>>808 あー、そうだな。WebSphere、Weblogic、Tomcat 上で
様々な Struts 劣化ラッパを使って開発してきたが、
そのほうが入力チェックとか考えると楽だろ。
何百画面とかあると、俺的にはそのほうが管理が楽だ。
>>808 で、String 以外の使って入力チェックの問題は
どう回避してるの?
>>807 ってか、Struts そのままでシステム組むなんて無いだろ?
ドメインフレームワーク被せるだろ。
>>807 1.画面Aでsubmit
2.Action Aが起動して中で色々処理
3.Action Aでsuccessを返す
4.画面Bを表示
4で2の部分のActionFormは当然見える。
>809 >810 >811 そもそも画面用のActionFormと、ほぼ同じ内容になると思われるエンティティを二つ準備するのは無駄かなと俺は思う。 チェックの問題ってIntegerとかの話か?nullにならないとか。 AbstractActionFormみたいな抽象クラスで ConverterUtil を呼んで何とかしてる。 逆に聞きたいが、何十もネストしたテーブルを作ることがあるかと思うが、その場合はそれ用のAF(StringばかりのAF)をずらーっと作るわけ? >812 当然そうなんだが、どうもしっくり来ない。 詳しくは面倒なんで説明せんが、とりあえず微妙なんだw
>>814 ネスト?
関連が強いなら当然、インナークラスだろ。
メンテナンス性が低下しないならインナークラスの多段ネストでもいい。
再利用性があるなら、普通の外だしクラス。POJO。
Form はそのコレクションの単純なアクセッサ、入力可能なら
int 引数付き getter も用意。
>813 それは理解できる。 今回は、 5.画面Bでsubmit 6.Action Bが起動 って流れなわけ。 で、1で送信したActionFormと、5で送信したいActionFormの内容が違う場合なんだよな。 そしたら画面BのJSPってなんかおかしいことにならない? 1のAFも表示したいけど、5のAFも送信したいわけ。
>815 >普通の外だしクラス ってのはStringだけのAFのことよな? Formについては理解してる。OKOK。 それで入力受けた後、エンティティに値を放り込むわけよな? そこは自作のコピーユーティリティ?
>>816 だから、そういう画面だったら1Form だろ。
全然違う機能だったら、Action で別 Form を new するなり、
BeanUtils なり手動なりでコピーしれ。
・・・眠いから寝る。
>>816 外野からだが、とりあえず試してみてくれ。
んで結果を教えてくれ。
820 :
nobodyさん :05/02/25 01:15:26 ID:zGPxgdzB
>819 まぁ当然できるわけ無かった。 req.getAttirbuteは、当然そのリクエスト範囲でしか有効ではない。 前のActionのリクエストなんか見れるわけ無いからね。 sessionなら多分いけると思う。 が、sessionはできるだけ使わないようにせんとね。だから却下 >818 最後は俺がしつこいから少々面倒だったと思うが、勉強になった。ありがとう。 俺はやっぱりAFとエンティティの二つを作るのは嫌だからAF=エンティティなノリで行くわ。
821 :
nobodyさん :05/02/25 03:52:21 ID:bTaebwTj
規模が小さければ、まぁそれでもいいが・・・・
あ〜やっぱStruts自体、なんか使い辛い・・
というか、夢を持ちすぎなのかと。 項目数が変わる程度の固定フォームの入力結果を、Javaのオブジェクトにまとめてくれるだけのライブラリだよ。 ActionFormを表示で使いまわすのは、まぁ好きにやってくれと。
824 :
nobodyさん :05/02/25 13:06:51 ID:zGPxgdzB
>823 動的に項目数が変わる複雑っぽいフォームはやっぱり面倒かな?
825 :
820 :05/02/25 22:46:08 ID:???
俺はようやく気がついた。 ActionForm の属性が String なんてどうでも良い。 問題は ActionForm の中のネストした部分が、ActionFormであるかどうかだ! エンティティそのまんま引っ付けたら reset, validate も呼べない(使えない)んだよな つくづくあふぉだなぁと思った すまんみんな。 つか、俺の作業報告書みたいになって巣マソ
ActionForm interface なんてねーのかよ?
> エンティティそのまんま引っ付けたら reset, validate も呼べない(使えない)んだよな つかえるけど?
エンティティに対しての validate よ?
>>826 Struts in Actionに、「なぜActionFormはインターフェイスじゃないのか」みたいなこじつけとしか思えない理由が書いてあった。
ActionやActionFormがインターフェースでないのは 設計ミスとしか思えない
832 :
nobodyさん :05/02/26 02:15:39 ID:vpZ2inME
Validatorの話題が出てたのでちょっと聞きたい。 普通の ValidatorForm で JavaScript のチェックをかけることはできる。 ValidatorFormのListの中に入れたクラスに対して JavaScript でのチェックがかけれないんだけど、 これってどうしようもないんかなぁ?
>>832 自分でJavaScript関数を書くしかないけど、えらい面倒で俺は断念した
>>831 ActionFormにしなくてよくなったんじゃなかったけ?次のバージョンから?
>>834 次のバージョンってどれだ?
2.0のことを言っているのか?
わかんないけど、POJOでいけるようになるんじゃなかった?
しつもーん。 Strutsのライブラリをリンクした一般Javaアプリケーションでの話なんですが、 ModuleConfigインスタンスを、お手軽にstruts-config.xmlに戻す方法はないでつか? 逆(ファイル名を指定してModuleConfigインスタンスを取得)は、Digesterと org.apache.struts.config.ConfigRuleSetを使えば、簡単に出来ました。 お手軽Struts-configエディタを作るのに、いちいちDOMとかSAXとかいぢるのは面倒かと思って。
<logic:iterate id="item" name="hoge" property="items"> <bean:write "ほげほげ"/> <html:errors /> <html:text property="text"/> </logic:iterate> とやって、複数行テキストを入力させて、入力エラーになった行だけにエラーマーキングをしたいのですが。 <html:errors />を、<logic:equal>で囲ったり、試行錯誤していますが、いまいち巧いやり方が分かりません。 誰か良い知恵を授けてください。
>>838 まず items の要素を Bean にして、それに
エラー情報を持たせる。
840 :
nobodyさん :05/03/14 02:17:45 ID:J20fAtXM
サーブレット action が現在利用できません。。503ってエラー がでるのですが、誰か教えてください。。。 お願いします。。
ログに何か出てないか? それもだめならwork以下削除
>>840 struts-config.xmlの記述が間違っていて、ActionServletの初期化でコケている可能性大。
>>181 さんと同じ現象なのですが。
>>186 の対応をしても、同様の現象が治まりません。
struts-config-foo.xml(分割後)には、
<action path="/hoge" forward="/hoge.jsp" />
を記述。
違うところは、0サイズのインラインフレームを呼び出しているところだけです。
呼び出し元JSPは、
<iframe src="/hoge" 縦=0 横=0></iframe>
src="hoge.jsp"がダメなのは
>>185 さんの説明で理解できたのですが、
上記のように、action経由にしても、Cannot retrieve action mapping /hoge
と言われてしまいます。
呼び出し元JSP、呼び出し先JSPともに、foo/xxx.JSPにあります。
また、呼び出し先JSPにも、<html:form action="/hogehoge">を記述し
こちらは、JavaScriptよりsubmitを行っていますが、
こちらも同様に、Cannot retriece action mapping /hogehogeと
怒られてしまいます。
どなたか解決策のご教授を・・・
844 :
nobodyさん :2005/03/26(土) 13:30:58 ID:omE1qwtI
こんにちは。質問があります。 例えば掲示板などのWEBサイトで、レス表示ページと書き込みフォームページが一緒になっている場合(2chのスレッドなど)、 「1.jsp」と言うページから書き込みを行い、書き込み成功後の遷移先として同じurlのページ(「1.jsp」)を指定し、 書き込んだ内容が反映されている、と言うような動作をさせたいのですが、 書き込み後1.jspに遷移させてもキャッシュがロードされてしまい、ブラウザの更新ボタンを使用しないと反映されたページが表示されません。 これは、どのように対処すればよろしいのでしょうか。 誰か分かる方がいらっしゃいましたらご教授よろしくおねがいします。
response.setHeader("Cache-Control", "no-cache");
847 :
844 :2005/03/28(月) 09:04:00 ID:???
>845さん、>846さん お礼が遅くなってしまい申し訳ありません。 上記方法で試してみたところ無事やりたいことが実現できました。 教えていただき、どうもありがとうございました。
>>847 つか、Strutsカンケーないじゃん
とか言ってみる
>>847 Struts的解決なら、struts-config.xmlに
<controller nocache="true" />
なのだが。
851 :
nobodyさん :2005/04/05(火) 21:08:04 ID:4w6hgIMg
助けてください。 動的に数が変化するhtml:checkboxを使用しています。このcheckboxにvalue属性で初期値(文字列)を与えています。 String配列でgetter/setterを作成し、チェック状態のときその初期値を取り出すことはできたのですが、 reset()メソッドが思うようにききません。 ActionFormは以下のようになっています。 public class TestForm extends ActionForm { private String[] checkList = new String[128] public String getCheckList(int index) {return this.checkList[index];} public void setCheckList(int index, String str){this.checkListGroup[index] = str;} public void reset(ActionMapping map, HttpServletRequest req){ for (int i = 0; i < this.checkList.length; i++){ setCheckList(i,null); } } } checkbox部分JSPは以下のようになっています。 <logic:iterate id="id" name="ArrayListObject" scope="session" indexId="idx"> <%-- id(ArrayListObjectの要素)はString型の値です --%> <html:checkbox property='<%="checkList[" + idx + "]"%>' value="<%=id%>"/> </logic:iterate> 誰か分かる方がいらっしゃれば教えていただけないでしょうか。
852 :
nobodyさん :2005/04/06(水) 21:47:06 ID:XXaMulFt
すいません。Strutsのhtml:fileタグに初期値を与えたりってできないですか? ファイル名を入力した後、別画面に飛んで、また戻ってくるときれいさっぱり消えてしまいます。
>>852 Strutsの問題ではなく、html的に<input type="file">に値をセットするのはムリ。
(巨大なセキュリティーホールになるため)
必ずユーザオペレーションでファイルを選択するか、ファイルパスをコピペするしか方法はなすぃ。
>>851 > ActionFormは以下のようになっています。
> public class TestForm extends ActionForm {
> private String[] checkList = new String[128]
> public String getCheckList(int index) {return this.checkList[index];}
↑public boolean getCheckList(int index) {return this.checkList[index].equals("true");}
> public void setCheckList(int index, String str){this.checkListGroup[index] = str;}
↑public void setCheckList(int index, boolean bool) { this.checkList[index] = bool ? "true":"false";}
> public void reset(ActionMapping map, HttpServletRequest req){
> for (int i = 0; i < this.checkList.length; i++){
> setCheckList(i,null);
↑は、setCheckList(i, "false");
> }
> }
> }
>
> checkbox部分JSPは以下のようになっています。
> <logic:iterate id="id" name="ArrayListObject" scope="session" indexId="idx">
> <%-- id(ArrayListObjectの要素)はString型の値です --%>
> <html:checkbox property='<%="checkList[" + idx + "]"%>' value="<%=id%>"/>
> </logic:iterate>
>
とすれば、value="true" or value="false"になっていいんでね?
>>852 それはいくらやっても無視される、って公式ドキュメントに書いてあるだろう?
>>854 あ。ごめ。
> setCheckList(i,null);
↑は、setCheckList(i, false);
> }
> }
> }
>
> checkbox部分JSPは以下のようになっています。
> <logic:iterate id="id" name="ArrayListObject" scope="session" indexId="idx">
> <%-- id(ArrayListObjectの要素)はString型の値です --%>
> <html:checkbox property='<%="checkList[" + idx + "]"%>' value="<%=id%>"/>
↑<html:checkbox property="checkList" value="id"/>
ね。
これなら、Stringでなくbooleanの配列でもいいか・・・
敢えてStringにする理由があるなら、setter/getterはStringのままで。
857 :
851 :2005/04/07(木) 08:15:09 ID:???
>>854 =856様
どうもありがとうございます!
取り掛かってみます!
>853さん>855さん ありがとうございました。あきらめることにするです。 おれもココで答えられるようなオトナになるためにがんばるぞー!
うーん、最近の流れは勉強になるなぁ。 いつまでも独学は不安なので、自分の独学部分が正しいか 検証することも踏まえて、なんか本を買おうと思うのですが、 ・これは読め ・これは糞だから読んじゃだめ などありましたら、ご紹介いただけますか?
860 :
859 :2005/04/10(日) 00:21:38 ID:???
すいません質問させてください。 <html:select property="targetId" size="6" multiple="1" > って感じで作ったリストのOPTIONに、 SELECTEDを付けてあらかじめ選択しておくことはできたんですが、 選択した項目が下のほうにあった場合、選択はされているけど、 スクロールバーを動かさないと見えない、という状態になりました。 multipleをはずすと、ターゲットが見えるように移動してくれるのですが、 仕様的にmultipleを使わなければならないので、なんとかしたいです。 あらかじめ見えるように移動してくれるほうほうはないでしょうか?
Strutsじゃなけりゃ可能なの?
DBにアクセスするため struts-config に DATA_SOURCE の記述 をしています。 この状態で strutstestcase は使えるのでしょうか? テスト流そうとすると struts-config ロードした時点でエラー になってしまいます。
>>863 つうか、いまどきDBの管理をStrutsでやるな。
>>864 Struts では DB 使うなってこと??
>>865 自己レス。ひょっとして struts-config に書くのではなく、
*.java の中で自分で管理せよ、って意味かな。
具体的にはどうしたらいいんですか?
>>865 コンテナ管理のDataSourceをJNDI経由で取ってくるのが良い。
869 :
nobodyさん :2005/04/22(金) 12:09:34 ID:Rd3I4sA9
DB使わずにFileで管理
>>870 実は開発は Tomcat ですが、完成すれば WebSphere
にのせることになります。なので、Tomcat 側で DB の
記述するのは、だめかなと思います。
>>871 DataSourceをJNDI経由で取ってくれば
アプリ側はコンテナ依存しないだろ?
>>874 自己レス。JNDI で書き換え完了。
Tomcat の server.xml <context> に書くとこでミスった。
各webアプリの context に書かないとだめだった。
server.xmlにグローバルリソースを書いて、各WebアプリにはResourceLinkを書くのがウマー
もうダメだ・・・ sessionにBindされた情報、jsp記述、DBの処理、SQL記述べた書き、乱立するアクション、肥大化するマッピング、恐ろしい仕様、面倒見切れません・・・ 誰か助けて 。゜(つд∩)゜。
だめな時には正直にだめだと上司に伝えるのもまた責任の果たし方の一つであーる。 ところでそれStrutsとどういう関係が?
>>878 Strutsで大量の画面フローを1つのコンテキストに収めるとそうなるといってんじゃないの?
まあ、
>>877 もあせってて、意味不明なカキコになってるような気もするが。
>>863 自己レス。やっと strutstestcase 動くようになりました。が、新たな
問題発生しました。setUserRole() ではひとつのロールしかセット
できません。実際は複数のロールに属しています。strutstestcase
のコードみたら、
public boolean isUserInRole(String s)
{ return s.equals(userRole); }
public void setUserRole(String role)
{ userRole = role; }
となっています。複数設定するにはどうすればよいのでしょうか。
>>880 StrutsTestCaseの該当コードを変える。オープンソースの常識です。
オープンソースの常識ではないと思うけど、テスト用のライブラリならあまり問題ないね。
883 :
nobodyさん :2005/05/27(金) 23:23:04 ID:iwPrxZfg
intra-mart使えば?
なんで唐突に?
>>881 HttpServletRequestSimulator.java の isUserInRole() を
public boolean isUserInRole(String s)
{
if( userRole.indexOf(s) >=0 ){return true;}
else{return false; }
}
に変えて作った class ファイルに置き換えたら希望通りの
機能になりました。
ところで、こういうやり方じゃなくて メソッドオーバーライドで
テストケース内に直接書くことはできないのでしょうか。
JUnit とか strutstestcase でテスト流す時、デバッグって できないのでしょうか。テスト失敗したとき、どこでこけたか わからず苦労します。
Eclipseとかそういう開発ツール使えば可能。
>>887 Eclipse で使っているのですが、ブレークポイントセットしても
ストップしません。もう一度やってみますが、
>>887 さんは実際に経験あるのですか?
>>888 TomcatLauncherPluginなら、source path 設定してるか?
>>889 ごめん。ブラウザでアクセスしたらブレークするけど、普通にEclipse から
Run(実行) したらブレークポイントセットしていても止まらないんだね。
メニューからDebug選んだらちゃんと止まった。
891 :
nobodyさん :2005/06/11(土) 02:12:21 ID:OxaXLAky
>>891 使ったことないなあ・・・。
もし使うなら報告きぼんぬ。
>>891 どんなものか簡単に教えて。
単にHTMLのフレームに対応したっていう感じのもの?
tilesとは何が違うの?
894 :
nobodyさん :2005/06/12(日) 14:45:10 ID:pQiMuddu
895 :
初歩的な質問で申し訳ありませんが。。。 :2005/06/13(月) 11:27:15 ID:HDNGcZXO
ログイン画面→確認画面→完了画面と遷移させる画面をstrutsで作ろうとしてますが、うまくいきません。現象は以下。 【現象】:struts-config.xmlのscopeをsessionにすると、上記画面遷移がうまくいく。requestにするログイン画面→確認画面→ログイン画面と戻ってしまいNG。 です。ログイン画面→確認画面遷移時にパラメータAをpostしているのですが、requestにするとそのパラメータAが確認画面→完了画面遷移時にnullの為Actionクラスが呼ばれない様に見受けられるのです(ログ入れて調査)。 てか、そもそもActionServletがそんなパラメータの有無でstrutsのリクエストかどうか判断する処理なっているものなんでしょうか? この辺の判断の処理がどうなってるかご存知の方、又は同じような経験をされた方、どなたかご教授下さい。よろしくお願いします。
とりあえずスコープの意味を理解しろ。 それから、お前のプログラムで、サーバとクライアント間でどのようにデータが流れるのか理解しろ。
>>894 あ、それ書いたの俺だ。
すげー適当に書いてほったらかしたまま。 心より恥じる。
ちなみに最近はStrutsやってないんで触ってませんが
地味にバージョンあがってるようですね。
JSFとか大層なモンじゃなくて、主にUIの強化です。
HTMLのUIパーツのヘボさを補うために、JavaScriptとか生成してくれます。
テーブルのページとか編集、ソート等、自分で書くと面倒だし、かといって
ちょうどいいタグライブラリが出回ってないような部分が充実してます。
テーブルとメニュー、レイアウトはかなり重宝しました。
898 :
nobodyさん :2005/07/03(日) 00:02:00 ID:g/N41TfH
半年かかってjava→jsp→servlet→ejb→opensourceを組み合わせてwebアプリができるようになったのに 会社で.netに移行する動きがちらほらする JSFをとりあえず勉強したものがいいものか
>>898 別に.NETに移行してもいいんじゃない?
自分の中で、今までJavaで身に付けた技術や知識を腐らせないように、
多少でも勉強を続けておけば、.NETでもJavaでも提案できるようになるだろ?
俺も客先によって、.NETやJava、PHPと色々とやってきたおかげで
今では殆どのWebアプリの案件の開発が出来る。
浅く広くやりたいか、深くやりたいかだな。
そういうときは市販の入門書を買え。
903 :
nobodyさん :2005/07/04(月) 18:37:20 ID:XaCP499J
DynaActionFormで値をリセットするにはどうしたらいいの?
904 :
nobodyさん :2005/07/04(月) 23:16:58 ID:TU4JC3n9
reset()
905 :
nobodyさん :2005/07/07(木) 11:45:37 ID:LtmvbCkC
logic:redirectタグのURL本体部分に変数を使用したいのですが、 どうやれば良いのでしょうか? <logic:redirect href="xxx"/> ←xxxの部分を動的に変えたい。
<logic:redirect href="<%= xxx %>"/>
907 :
903 :2005/07/07(木) 18:38:08 ID:b/mSczCX
>>904 というか、Actionからではなく、リクエストが上がってきたときに
DynaActionFormに値がセットされる前にしたいんだけど。
>>907 単純に初期値をセットしたいなら、initial属性で設定。
もうちょっとゴニョゴニョしたいのなら、DynaActionFormのサブクラスを
自作してreset()をオーバーライドするか、Dynaは使わない。
個人的感想:
そもそも、DynaActionFormなんてメリットよりデメリットの方がでかすぎで
使っても嬉しいことはあまりないと思う。
909 :
903 :2005/07/07(木) 19:28:05 ID:b/mSczCX
>>907 サンクス
ところで、あと、validation.xmlを使っていて
<field property="pass" depends="mask">
<arg0 key="prompt.pass"/>
<var>
<var-name>mask</var-name>
<var-value>[a-z0-9]{5,16}</var-value>
</var>
</field>
と設定すると、5文字まではチェックされるんだけど、それ以降は
チェックされず、英数字以外が入っていても17字あっても通って
しまうんだけど、何ででしょうか。バグですか、それとも。。
<var-value>[a-z0-9]{5,16}</var-value> じゃなくて <var-value>^[a-z0-9]{5,16}$</var-value> としてみると、どう? ドキュメントには、正規表現の指定は^と$で囲めと書いてあるよ。
911 :
903 :2005/07/07(木) 22:58:23 ID:44PhT5Xu
>>910 できました!!
ありがとうございます。気づきませんでした。
結構細かいところが重要になりますね。
DynaActionFormしか使ってないシステムの保守で苦しんでる俺がやってきましたよ。 これから新規で開発する人、頼むから普通のActionForm使ってくれ。
>>913 俺は
>>912 ではないが、こういった点がイヤだった。
・プロパティの型や名前が実行時解決である(コンパイル時にチェック不可能)
・set()にセットするオブジェクトが指定の型に変換できるかどうかも実行時解決である(コンパイル時にチェック不可能)
・Beanのネスト構造が使えない(プロパティは全部ベタで実装し、Actionクラスで適切なデータ構成に変換しなければならない)
916 :
nobodyさん :2005/07/19(火) 09:40:57 ID:B9k8AExU
おはようございます。質問があります。 ログインを行う画面login.jspがあり、このjspではアカウントとパスワードを入力し、submitボタンでログイン処理を実行します。 このときのアクション名はlogin.doです。 次に、特定のアカウントのみアクセスできるhoge.jspがあります。 認証を行うためにlogin.jspを経由します。アクセス権のあるアカウントだったらhoge.jspに遷移します。 この、hoge.jspに遷移した後、ブラウザのURLアドレスバーにはlogin.doが入力されています。 ここをhoge.jspに入力させておく方法はあるのでしょうか? 誰かご存知のかたがいらっしゃいましたらご教授願います。
>917 どうもありがとうございます。参考ページまで教えていただけて助かります。
919 :
& ◆tNtHsziLno :2005/07/20(水) 13:55:49 ID:vT0JkkZS
まだ、STRUTSなんつってんだぁ、こんなもんいつまでみんな 使い続けるの? EJBに騙された時と同じだよ。 だめなもんは、ダメ! もうJAVAはお先真っ暗だよ。
EJB3いいよ。 Strutsも、単に入力データをBeanにまとめてくれて入力チェックしてくれるだけだから、便利に使えばいいと思う。
922 :
& ◆tNtHsziLno :2005/07/21(木) 13:45:55 ID:Yejbz1QV
>>920 いや、騙されてますよあなたは。
だって、EJB3のドキュメントなんて、全然そろってないじゃんか。
JBOSSにいってさんざんしらべたけど、
EJB3 Full document のページになぜかHibernateの
マニュアルがおいてあるだけで。
だいたい、SUNが仕事遅すぎるよ。そんなだから、後発のドトネトに
負けるんだよ。
全角文字使いまくりのこの人はエンジニアなのかね?
まさか。 時々まねーじゃ、時々SEと呼ばれる、メールと謝罪だけが仕事の人じゃない?
>>922 EJB2コンテナは、つくりはしっかりしてたのにプログラムの組みやすさから敬遠されてたけど、EJB3でプログラム組みやすくなって万事おけ
HibernateとEJB3の関係知れば、現段階で永続化に関してはHibernateのドキュメントでも一向に構わんよ。
927 :
nobodyさん :2005/07/23(土) 13:19:12 ID:t6KMLNpw
validation.xml って変更したら動的に再読み込みしてくれないの? いちいちtomcatを再起動するのは大変なんだが。
>>927 アプリケーションのみリロードまたは再起動すればいいじゃん。
Tomcatを再起動する必要はない。
>927 面倒ならソースパスの下に入れれば良いのでは。
>>927 それだけじゃダメ。ValidatorPlugInのinit()が実行されないと変更は反映されない。
931 :
nobodyさん :2005/07/25(月) 19:56:51 ID:Fc9EXQSf
こんばんは。質問があります。 インターネットブラウザから日本語ファイルにアクセスしようとして、 直接ブラウザのアドレスバーにパスを入力すれば参照できるのに、 以下のようにlogic:redirectを使用すると見えなくなるのは何故なのでしょうか? <bean:define id="path" name="PATH" type="String"/> <%-- PATHの中身=file://hostname/日本語ファイル.xls --%> <logic:redirect href="<%= path %>"/>
時間に依存するテスト(StrutsTestCaseとかJUnit)をするには どうすればよいのでしょうか。たとえば毎日曜日 12:00-13:00 のみ 分岐するコードがあります。パソコンの時刻を変えたらひとまず テストできるのですが。。。
>>928 Eclipse の Tomcat sysdeo プラグインってTomcat自体をリロードするよね?
アプリだけの再起動って sysdeo じゃできないの?
>>933 簡単な方法としては、現在時刻を可能な限り外側から与えるようにする
hoge(){
if(new Date() < 2005/2/6){
。。。
と書くのではなく
hoge(Date now){
if(now < 2005/2/6){
。。。
と書く
>>934 ANTタスク作ってやればEclipseでもいけるよ。
>>934 アプリのみリロードだよ。
Tomcat自体のリロードってなんだよ?
再起動とリロードは違うぞ。
プロジェクトを右クリック→Tomcat→Reload This Contextだよ。
>>938 sysdeo インストールしたらEclipse上にアイコン3つできるけど
いつもそれ押してる。これってTomcat再起動していると思うけど
(時間かかるし、Consoleメッセージでも分かる)。
ブラウザから Tomcat の ../manager/list にアクセスしてアプリの
リロードしたらかなりすばやくリロードするけど。
Reload This Context 試してみるわ
>>940 それはTomcatの再起動。リロードではない。
プロジェクト右クリックからのリロードは、
Tomcat Manager App の再ロードと同じ。
ウィンドウ→設定→Tomcat→Tomcat Manager Appでユーザ名とパスワードを設定するのを忘れずに。
>>935 リファクタリングだね。ファクトリーメソッド作って書き直しました。
Virtual Mock Object も勉強してみます。
>>941 Reload This Context でうまくいきました。ショートカットキー設定
できないのかな。
ショートカットの設定にはなかったのかい?
ぶっちゃけStrutsってどうよ?
それなりに
日本ではそんなに、にぎわってない?
んなこたぁ〜ない。 1月4日に神社を訪れて、「初詣ってたいしたことない」っていってる感じか?
もう旬は過ぎたってこと・・・?
次に来るのがJSFだとわかっているけど、JSFが実用段階に成熟するまで もう少し時間がかかりそうだから、JSFはキャッチアップしつつ、 業務では今は仕方なくStrutsという感じ。 JSFについては、ドキュメント・実例・ノウハウ・サポートする開発ツール (とくに、OSSで良質なもの)、Apache MyFacesの完成度が上がること これらが出そろうと、Strutsは衰退するだろうね。 Struts・JSF両方を作ったCraigが「Strutsはもうレガシーなもの」と明言しているぐらい。
JSFはHTTPをラップしまくって見えなくしてるから、StrutsはStrutsで残りそうだけどね。
Struts2.0ワクワク
Struts2.0ってでるの?
Struts2.0はJSFと親和性があるんだって
>>954 親和性というか・・・・
JSF + Springframework + αのフレームワークだよ。
Strutsという名前がついてはいるが、
現在のStrutsの延長ではなく、まったくの別物。
それはJSFと組み合わせたらそういう構成になるってこと? それともJSF抜きでそうなるの?
>>956 JSFが含まれてるんだよ。
ソースコード落としてみろ
マージマジマジカ!
Strutsなんてない方がよかった。 Strutsのせいで2〜3年が無駄に失われてしまった。
>>959 べつの仕事したほうがいいんじゃないかな。
じゃないと、これからも時間を無駄に失っていくことになるよ。
>>944 ショートカットキー見つかりませんでした。
validatorのfieldのpageは数字しか機能しないのでしょうか
>>965 ソース見れば一発でわかるぞ。
ソース見る気のない奴はオプソ使うな。
モヒカン様はいうことが違う
>>966 えらそーなこというな。
てめーがstrutsつくたんか?
この勘違いやろーが
テーメーが手がけてるんだったらちょっとは聞き入れてやるよ
結局てもーも使うだけだろ?
>>968 うだうだ言ってないでソースぐらい見ればいいじゃないか。
ソースも見ない奴がこの手のフレームワークを使うことは俺も賛成しかねる。
とはいえ、ソースをみないと理解できないフレームワークというのは 完成度が低いのではないかと思う。
んなこたーない
高いとはいえないな
>>970 それじゃ、Javadoc見ればいい。
特定のAPIが数値型を引数に取るかどうかなんて
ソースかJavadoc見るしかないだろうに。
逆に、Javadocやソースで明快な答えを得られるのだから、
シンプルでわかりやすいフレームワークと言えるのではないかと。
そういうものがあるにもかかわらず人に聞かないと使えないような
フレームワークだったら完成度が低いとは言えると思うがね。
974 :
970 :2005/08/19(金) 00:17:45 ID:???
すまんすまん、Javadoc見てわかるならOKだと思うよ。Javadocでなくても なんらかのドキュメントでもいいけど。 ただ、 >ソース見る気のない奴はオプソ使うな。 とか >ソースも見ない奴がこの手のフレームワークを使うことは俺も賛成しかねる。 とかいう発言があったので、反射的に書いてしまった。せっかくフレームワーク 使うんだったら、それに関するコストは極力下げたいところだしね。
975 :
nobodyさん :2005/08/20(土) 12:51:20 ID:RvcLwBWW
MockStrutsTestCaseを使って、テストの自動化をしているのですが、 ファイルアップロードを含むテストはどうやってやったら できますか?
976 :
975 :2005/09/24(土) 17:41:39 ID:Si0DCOon
閑古鳥が鳴くスレとはここのことか。久しぶりに訪れましたが レスはもちろんのこと、何の書込みもない。 もうStrutsの時代は終わったのね。勉強時間が無駄でした。 自問自答ですが、結局これはActionFormに直接FormFileをセットして Testクラスから直接Actionのexecuteを呼び出すようにしました。。。
質問に答えてもらえなかったら逆切れするスレはここですか? ま、976がやっても無駄なんだろ。やめれば?
>>978 悪口しか書くことのできない技術力ゼロの奴とはお前のことか?
存在意義はないので消えてくれ。