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

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

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん03/04/28 08:14ID:Ub0n1fGR
 流行っているのか、流行っていないのか謎の Struts を語るスレです。
http://www.ingrid.org/jajakarta/struts/
http://jakarta.apache.org/struts/
0234nobodyさん03/12/12 11:57ID:???
>>233
何がしたいのかよくわからんが、Velocityでも使えば?
0235nobodyさん03/12/21 18:11ID:???
【ゴールデンレス】
このレスを見た人はコピペでもいいので
10分以内に3つのスレへ貼り付けてください。
そうすれば14日後好きな人から告白されるわ宝くじは当たるわ
出世しまくるわ体の悪い所全部治るわでえらい事です
0236nobodyさん03/12/24 23:17ID:???
HTMLのフレームを使ったサンプルどこかにありませんか?
本でもOKです。
023723603/12/26 23:18ID:???
自己解決しました。
TomcatのAdministration ToolがStrutsを使用していました。
MemoryRealm使っていて丁度いいサンプル。
残念ながらTomcat4.1.29はStruts1.0でしたが。。
023823503/12/27 18:18ID:???
自己解決したのでもういいです



偽235
0239nobodyさん04/01/04 05:06ID: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なので上と違う気がするのですが…
教えて頂けたら幸いです。
024023904/01/04 05:12ID:mf+7Ni9J
ダウンロードしたファイルを解凍して、
webappsディレクトリ配下にあるwarファイルを
CATALINA_HOME\webapps配下に設置しました。
特に他にやることはないはずなのですが…
0241nobodyさん04/01/04 05:16ID:???
>>239
エラーメッセージに「Permission denied」とあるとおり。
パーミッションの問題。
TomcatのworkディレクトリにTomcat実行ユーザの書き込み権限がないため。
なぜindex.jspがあるディレクトリと違うディレクトリでエラーになるのかは
Struts以前にJSPの勉強が必要。ヒントは、
ファイル名が「index_jsp.java」になっていること。
024223904/01/04 06:16ID:mf+7Ni9J
>>241
パーミッション変えたら出来ました!ありがとうございます。
最近Linuxをいじり始めたばかりで…ご迷惑かけました。

ヒントの部分なんですが、「index_jsp.java」というのは
javaファイルに変換されて、work上でコンパイルされているということで、
このとき書き込みできないとコンパイルしようがないってことですかね?
0243nobodyさん04/01/04 22:45ID:???
ベロシティを超えるデザイン分離、イベントドリブンな Tapestry に
鞍替えしますた。
0244nobodyさん04/01/07 02:45ID:???
Struts Studioのフリー版使ってみたんだけど
おっそろしく楽だな。
0245nobodyさん04/01/10 15:18ID: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」という最近出た本によると、推奨されてない
ようだけど…どうなんだろ。
皆さんのフレームワークではどうやってますか?
0246nobodyさん04/01/10 22:05ID:???
A画面からB.doへ跳ばさないのはなぜだ?
0247nobodyさん04/01/11 11:39ID: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の標準的な使い方ではなくなっている(?)
ことかな?
0248nobodyさん04/01/11 11:53ID: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 表示
てな動きです。
こういう使い方は邪道なのでしょうか?
0249nobodyさん04/01/11 12:21ID:???
(°Д°)
0250nobodyさん04/01/11 15:01ID:???
馬鹿だ。
1画面につき1アクションクラス、というのは
「jspにたどり着くためには*.doを経由させる」ということで

kuso.do→kuso.jsp
unko.do→unko.jsp の時の遷移は

kuso.doにリクエスト→kuso.jsp表示→
kuso.jspからunko.doにリクエスト→unko.jsp表示 なのであって


「*.jspの送信先がそのjspに対応するアクションクラス」というのは
つまりあれだ、

氏ね
0251nobodyさん04/01/11 15:05ID:???
>>190を読んだ方がいいと思うよ。
つーか確かに最初はよくワカランが、
2、3日〜長くても一週間もあればぼんやりと全体像は見えてくるだろ?
少なくとも画面遷移の仕方とかさ。
カスタムタグの種類や使い方がおぼつかない、というのならまだしも。
0252nobodyさん04/01/11 18:16ID:???
>>248
>>244でも使えば?
GUIで設計できる上に遷移図の印刷も出来るから
自分らがどんだけクソな作業してるか実感できると思うよ。
025324804/01/11 22:13ID:p9BR0Sf1
レスありがとうございます。
でも、この設計でだいぶ開発が進んでいるので、
再設計しての後戻りはできそうにないんです。

動きに問題がないのであれば、このまま行くしかない…(;_;)
0254nobodyさん04/01/11 22:57ID:???
>>253
それよりもだな、自分の書いたことの間違いに気がついたのかと
0255nobodyさん04/01/12 15:03ID:qVNFm6x6
http://www.h5.dion.ne.jp/~cube/0_spike/spikelink02.htm
0256nobodyさん04/01/15 00:31ID:viAU4C2J
教えて下さい。
イクリプスで、すべて再ビルドを選択すると
ApplicationResourcesが文字化けしてしまいます。
原因はソースフォルダ直下にApplicationResourcesを置いているからなのですが、
良い管理方法が見つかりません。

指定したファイルを削除しないで「すべて再ビルド」、又は
指定したファイルにだけnative2asciiを当ててくれる
みたいな方法ってありますか?

EasyStrutsやらのプラグインを入れれば解決したりするんでしょうか。
そもそもソースフォルダにApplicationResourcesを置いているのが間違いでしょうか・・・
良い管理方法をご教示ください。

Tomcat,winXP,eclipse2.1,struts1.1
0257nobodyさん04/01/15 02:19ID:???
>>256
全体的に勘違いしている悪寒
そして全くのスレ違いですよ野糞
0258nobodyさん04/01/15 13:02ID:???
自己レスです。 native2asciiをあてたものをソースフォルダに置くことで解決しました。 何で気付かなかったのか不思議ちゃんです。 お騒がせ致しました。
0259nobodyさん04/01/17 03:37ID:???
一年前、テキストエディタオンリーでStruts勉強してた。
しかし、一体何をやっているか、わけがわからんかった。

現在、Eclipse+Struts Studio。もう効率はいいし
Struts StudioのおかげでStrutsの全体像もつかめて
何をやっているか意味がわかるようになった。

>>245なんかを見てると、去年の自分を見ているようで歯がゆい。
0260nobodyさん04/01/17 12:02ID:???
Strutsって、htmlタグ使わないかんの?
ひょっとしてそれ使わんとできへんこと多い?
0261nobodyさん04/01/17 12:44ID:???
このスレは、Struts を「いじくり倒す人」の為のスレでございます。
0262nobodyさん04/01/18 20:53ID:???
別にカスタムタグ使う使わないは自由。
別に全く使わなくても問題なし。
0263nobodyさん04/01/19 20:13ID:???
>>261
なんだ。Strutsを「いじくり倒す」といいながらそれだけの技術力もなく、
現行のStrutsに「粘着する人」の為のスレでしたか。
いじくり倒してんなら分かるだろ?
0264nobodyさん04/01/19 21:32ID:???
でも >>260 は Struts 始めたての子が考える疑問じゃん。
026526004/01/19 21:54ID:???
jakartaのtaglib使いたいんだけど。
0266nobodyさん04/01/20 00:38ID:???
>>265
両方使えるから両方使え。
0267nobodyさん04/01/20 02:50ID:???
>>114(間違ってるけど)や>>224のようにJSTLやスクリプトレットも
普通に使えるから好きにすればいい。
0268singles04/01/20 14:42ID:vmpc82Q3
>217 219 220
「かんたんStruts 」にはやられた。
本当に改訂版?
CD付きなのに、全ソースじゃないし。
実行時エラーは出るし。バグだらけだよ。
やすがにコンパイルエラーはなかったけど。

損した!!
0269nobodyさん04/01/22 20:16ID:???
別のスレで質問してどあほうからしか回答がなかったから聞きますが、
c:forEach でコレクションをくるくるってのがStrutsでできません。
自動生成されたjavaのソースを見ると、itemsに設定したものが
コレクションとしてでなく文字列として渡されてしまいます。
0270nobodyさん04/01/22 20:23ID:???
<logic:iterate /> ではダメな理由を言えよ。
あともしStrutsのタグライブラリを併用しようとしてるなら出力時はelを使わねぇと出ねぇぞ。
<bean-el:write 〜/> など。
しかもサーブレット2.3からじゃないと動かない。
0271nobodyさん04/01/22 21:55ID:???
Strutsをいじくり倒すのに理由がいるのか。
それともStrutsの次期バージョンには興味がないのか。
0272nobodyさん04/01/22 22:52ID:???
せっかくStruts使ってるんだから、わざわざJSTLにすることも無いだろ。
JSTLがうまく使えないっつうのなら、スレ違いだろ。
0273nobodyさん04/01/23 09:41ID:???
もっともだ
0274nobodyさん04/01/23 20:45ID:???
そうだそうだ。俺たちは知ったかぶりなんだ。Strutsのソースを調べなきゃ分からないことを聞くんじゃない。
0275nobodyさん04/01/24 23:56ID:NRU8Gq4U
http://hidebbs.net/bbs/right?sw=7
変な掲示板
0276nobodyさん04/01/25 00:18ID:56Ciihh9
http://hidebbs.net/bbs/right?sw=7
なんか糞
0277nobodyさん04/01/27 09:45ID:DNV4wH9r
初めまして。
struts初心者です。
BBS作ってるんですけど、どうやら自動で
ResponseUtils.filterを通されてるらしくて
改行を<br>に置き換えたりとかしたいんですけど
すべて
& → &
みたいな感じで変換されちゃってそのまま表示
されてしまいます。
なんとかこいつを黙らす方法ないでしょうか?
0278nobodyさん04/01/27 12:40ID:???
>>277
<bean:write ... filter='false'/> でどうよ?
http://www.janit.com/TechnoInf/Java/Struts1.1b3/userGuide/struts-bean.html
0279nobodyさん04/01/27 22:45ID:XpbhJdiO
>>278
すみません。
<bean:write name="onemsg" property="msg" filter='false'/>
でやってみたんですけど、駄目でした。
<pre><bean:write name="onedata" property="msg" filter='false'/></pre>
はできはするけど力技っぽくてプログラム的に美しくないとか思うのは思い上がりですかね?
0280nobodyさん04/01/27 23:14ID:???
>>279
ちょっと待て。
<pre>で囲ったって、&amp; をそのまま表示はできないぞ。
まさかと思って IE6 と Mozilla 1.6 で表示してみたが、
やっぱり &amp; は &として表示される。

とりあえずここ読んどけ。あと、実体参照という言葉を覚えろ。
http://mind.f.fiw-web.net/program/perl/tips0506.html
http://east.portland.ne.jp/~sigekazu/html/entities.htm
0281nobodyさん04/01/27 23:14ID:XpbhJdiO
>>278
すみませんでしたm(_ _)m
大ボケかましとりました。
<bean:write ... filter='false'/>
でいけました。
どうもありがとうございました。
0282nobodyさん04/01/28 22:12ID:15MYH/xw
なんか、Strutsを始めとするMVCパターンが実はアンチパターンなのではないかと
言われ始めているけどどうなんだろう。

下の記事、議論を巻き起こしています。英語だよ。
ttp://today.java.net/pub/a/today/2003/12/11/mvc.html
0283nobodyさん04/01/29 09:20ID:???
そもそもMVCモデルをパターンと
0284nobodyさん04/02/04 19:53ID:???
iterateタグの中にiterateタグを使ってるようなサンプルソースが載ってるトコ
ってどっかにないですかに
0285nobodyさん04/02/04 19:54ID:LrI+0eVy
書くとこ間違えたか・・?
0286nobodyさん04/02/04 19:55ID:???
あげちまった・・
0287nobodyさん04/02/05 05:33ID:g7RFhJQT
>>284
http://www.ingrid.org/jajakarta/struts/struts1.0/ja/target/documentation/struts-logic.html#iterate
0288nobodyさん04/02/05 14:24ID:???
strutsを使用する場合、JSTLは使ったほうがいい?
それとも使わないほうがいい?

いろいろな面から意見を聞きたいです。
0289nobodyさん04/02/05 16:42ID:???
JSTL使わないとキツイ、って時は使ってる。
実はスクリプトレットで書いちゃった方が楽だけど、無理してる。
0290nobodyさん04/02/22 05:30ID:???
>>287
もうサーバー移転して半年にもなるので、こっちにしようよ。
ttp://www.jajakarta.org/struts/struts1.0/ja/target/documentation/struts-logic.html

ただ、>>284が求めているサンプルはそこにはない模様。

<logic:iterate id="hage" name="hoge">
<logic:iterate id="mage" name="hage" property="mages">
 <bean:write name="mage" property="moge" />
</logic:iterate>
</logic:iterate>

みたいなことをしたい?
0291nobodyさん04/03/01 04:14ID:Durte6J6
Struts の data-source って、もう使わない方がいいのかな?
0292nobodyさん04/03/01 16:14ID:???
やらないほうがいいって書いてあるね
0293nobodyさん04/03/01 19:47ID:Durte6J6
>>292
じゃあ、せっせとソースを直すか。

DataSource ds = getDataSource(request);

DataSource ds = (DataSource)(new InitialContext()).lookup("名前");

しかし deploy 後に server.xml いじるの面倒だ・・・。
0294nobodyさん04/03/01 21:31ID:???
Struts って、もう使わない方がいいのかな?
0295nobodyさん04/03/01 21:53ID:GYV1jZxP
使わないほうがいいって書いてあるね
029629104/03/02 01:17ID:???
datascource を直したら、

[HttpProcessor[8888][4]] FATAL - [javax.naming.NamingException: Cannot create resource instance
at org.apache.naming.factory.ResourceFactory.getObjectInstance(ResourceFactory.java:167)

って言われるよ・・・
0297nobodyさん04/03/02 01:34ID:???
プーリングはcommonsの奴でやれ。
0298nobodyさん04/03/02 03:18ID:???
ところで、なんでdatasourceは使わない方がいいの?
029929104/03/02 03:34ID:AJ5+7psc
>>298 アプリケーション・サーバー側に標準技術があるから、そっちを使えって事かと。ブラウザーで設定できるし。それに Struts の DataSource は、接続先が1つにしぼられますね。
030029104/03/02 03:36ID:AJ5+7psc
>>296 自己レス。Tomcatのバージョンを 4.06 から 4.1.29 にあげたら解決した。理由は不明。
0301nobodyさん04/03/02 08:46ID:???
>それに Struts の DataSource は、接続先が1つにしぼられますね。
そうか?
0302nobodyさん04/03/02 08:54ID:nO+c0QMf
Struts + HIBERNATE、これ最強。
030329104/03/02 10:33ID:???
>>301 複数つなげるのかいなー。後学のためにサンプル希望。
>>302 HIBERNATEが最強に分かりません。ORマッピングって何?
http://wiki.bmedianode.com/Hibernate/
http://www.hibernate.org/
0304nobodyさん04/03/02 11:14ID:???
>>303
Java⇔RDBのMapping-Frameworkを語るスレ
http://pc2.2ch.net/test/read.cgi/tech/1049030272/
0305nobodyさん04/03/02 11:28ID:???
>>303
一生HTMLにロジック埋め込んでてください
030629104/03/02 11:36ID:AJ5+7psc
>>305 MVCは、Strutsでは不十分なのでしょうか?
0307nobodyさん04/03/02 11:42ID:???
>>305 が何を持ってそう判断したか分からんが
Tapestry + HIBERNATE、これ最強。
0308nobodyさん04/03/02 13:16ID:???
>>307
物凄い勢いで、禿しく同意
030929104/03/02 17:40ID:AJ5+7psc
>>307
HIBERNATEって、SQL ラッパーみたいに捕らえていいの?
詳しい人の説明をお願いします。
0310nobodyさん04/03/02 17:50ID:AJ5+7psc
http://www.kanzaki.com/docs/sw/rss.html
0311nobodyさん04/03/02 17:50ID:???
>>310 すまん、誤爆
0312nobodyさん04/03/02 19:32ID:???
>>309
DBアクセスレイヤーをもうけることで、役割が明確になり、
DB依存性を排除できる。理想は。
Hibernate だったらトランザクションやキャッシュ機構、
XML から Bean 生成、DB スキーマから Bean 生成、
スキーマ& Bean からXML 生成などがある。
0313nobodyさん04/03/02 20:37ID:???
Hibernate、オブジェクト操作だけで一通りのDB操作が可能だし、
さらに細かいことやりたいなら、HQLっつーSQLライクな記述でゴリゴリできる。
柔軟でいいよね。
たいがいのO/Rマッパーは、スキーマからJavaクラス作るときに、XML書いたり
XDoclet用のタグ書いたりとめんどくさいのに、jFaceDbc使えば、
既存のスキーマをリバースして、Javaのソースまで作ってくれるのが、(・∀・)イイ!
031429104/03/02 21:09ID:???
>>312 >>313 情報さんくす。でも、一文で数千バイトのSQL文を書いてしまう私に、向いていない気がしてきた。
しかし、食わず嫌いは良くないので、近い将来試してみる(予定)
0315nobodyさん04/03/02 22:10ID:???
>>314
SQL 直書き好きなら DbUtils が簡単でいいぞ。
しかし数千バイトの SQL って本当に必要か疑問。
031629104/03/02 23:03ID:AJ5+7psc
>>315
DbUtils ですね。調べてみます。

>しかし数千バイトの SQL って本当に必要か疑問。
正規化されたテーブルから、レポートを一発で出そうとするとクエリーが複雑になりますね。
そして、複雑なストアドを書いたりすると、もっと多くなる予感。
0317nobodyさん04/03/02 23:16ID:???
ビュー使えよ
031829104/03/02 23:24ID:AJ5+7psc
>>317 おっしゃる通りですな・・・(´∀`)モケモケ
0319Gon_Yuri04/03/03 14:58ID:???
突然脈絡の無い質問で申し訳ないのですが、
Struts環境下でSessionをオブジェクトに格納した場合、
TokenIDなるStruts固有のIDなるものがattachされるのですか?

(もし存在するのであれば)またそれってなんのためにあるんでしょうか?
すみませんがご教示お願いいただけないでしょうか、みなさまがた。。
0320nobodyさん04/03/03 15:03ID:mGkaH2Ir
>>319
「トークン」は、二重押し防止機能。
0321Gon04/03/04 15:35ID:???
早速の返答ありがとうございました!
ですが、セッションに格納するのに二度押し防止というのは
状況が良く分からないのですが、たとえばどのようなケースでの話しなのですか?
0322nobodyさん04/03/04 15:40ID:???
自己レスです。
これってブラウザで何らかの処理をしたあとに戻ってしまったときに、
もう一度その処理をしてしまわない(たとえば入金など)ようにするための
するという話でしょうか?
0323nobodyさん04/03/04 16:33ID:MDOKWyiL
>>322 ここの説明を読めば、なぜセッションに情報が含まれるのかが分かると思います。

http://muimi.com/j/jakarta/struts/struts5.html#SyncToken
0324nobodyさん04/03/04 18:33ID:+Av049LB
>322
そゆこと。

書き込みボタンをダブルクリックしたら、2重投稿になる掲示板とかもあるよね。
ああいうの防止にも使えるし。

複数画面にわたった処理がある場合に
途中の画面でブックマークされて後日そのブックマーク使ってアクセスされた場合にも
システム側でトークンの有無を見てたら、どこかの画面に飛ばしたりもできる。
色々便利ですよ。
0325nobodyさん04/03/06 06:16ID:Ag2/McPy
非推奨の方法を、今更解説してもどうかと思いますが、こんなの出ていました。

http://www.atmarkit.co.jp/fjava/rensai3/struts03/struts03_1.html

しかし、StrutsのFAQには、以下のように明示されています。
http://jakarta.apache.org/struts/faqs/database.html
"The DataSource manager is being retained in Struts 1.x for backward compatibility but may not be retained in Struts 2.x or later."

山田祥寛氏と@ITは、どういう意図で紹介しているのでしょうかね・・・
0326nobodyさん04/03/06 12:35ID:???
@ITの記事なんか話半分に聞いとけ
0327nobodyさん04/03/06 14:16ID:???
validate()によるエラーメッセージ出力以外で
Actionクラスから画面にメッセージを出力する場合の最適な方法って何?
Beanに詰めてJSPで出力が妥当かな?
0328nobodyさん04/03/06 17:51ID:???
>>327
・Action#saveErrorsを使う
・struts-config.xmlにexception要素を定義して、Actionからは例外を投げる。
・MyActionBase extends Action とかして俺様メッセージ表示機構を作る。
・自前のRequestProcessor用意して何かできるかも。
・その他

何が最適かなんて一概には言えないでしょ。
0329nobodyさん04/03/06 19:23ID:???
bean:writeでいいんじゃねーの
0330nobodyさん04/03/07 01:53ID:???
エラーはエラーとしてはっきりと区別させたい(<html:errors />で出したい)ならsaveErrors
メッセージが必要なだけならBeanに詰めてJSPで出力(<bean:write/>)
0331nobodyさん04/03/07 02:47ID:???
>>325
@ITはM$好きであることと、山田某が.NET、Javaかまわず何でも書いてる奴
であることを考えると、@ITはJavaを潰そうとしているのではないか?w

しかし、山田某、見境無いなあ・・・。金ないのか?
0332nobodyさん04/03/07 03:08ID:???
「10日で覚える〜」を書く人間がまともとは思えないよ。
0333nobodyさん04/03/10 00:18ID:Y4AzoxeC
Struts+JBossって使われているの?
■ このスレッドは過去ログ倉庫に格納されています