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

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

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん03/04/28 08:14ID:Ub0n1fGR
 流行っているのか、流行っていないのか謎の Struts を語るスレです。
http://www.ingrid.org/jajakarta/struts/
http://jakarta.apache.org/struts/
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って使われているの?
0334nobodyさん04/03/10 23:41ID:???
>>333
EJB 自体があまり使われてない。EJB が目的ではない?
http://pc2.2ch.net/test/read.cgi/tech/1036481443/

もちろんまったく使われてないわけではないので
技術者として習得する価値はある。
0335nobodyさん04/03/11 20:58ID:???
EJB興味はあるんだが、敷居が高そうな感じがする。
でもServletだけでは限界を感じるしなあ。
0336nobodyさん04/03/11 23:27ID:???
>>335
レイヤが違うもので限界を感じるっていわれても意味が分からん。
ORマッパーをどれかひとつと言われたら Hibernate。 間違いない。
0337nobodyさん04/03/12 03:25ID:5qVN4VSs
>>335 機能だけなら Servlet で全て足りている気がしなくもない。コード量が膨大になるだけ。
>>336 Hibernate を熱く語っているね。
0338nobodyさん04/03/12 20:49ID:???
>>336
EJBといえばO/Rしか思いつかんのか?
0339nobodyさん04/03/12 23:04ID:???
>>338
あと EJB といえば過去の遺物かな。
0340nobodyさん04/03/13 20:05ID:OCTfOcMT
<html:link>を使ってform(ActionForm)のsubmitって出来るんでしょうか?
0341nobodyさん04/03/13 20:57ID:1bZkOokW
>>340
フォーム名は分かるから、JavaScriptでonclickでイベントを拾えばどうにかなるかも。
やるべきではないと思うけどね。
0342nobodyさん04/03/13 21:23ID:OCTfOcMT
今こんな感じなんですけど、formの中が空なんですよね…
<html:link action="/add" onclick='document.forms["turnover"].submit();'>[ADD]</html:link>
0343nobodyさん04/03/13 22:15ID:???
カスタムタグの中に変数って使えない?(もしくはスクリプトレット)
<html:checkbox name="..." property="..." disabled="${変数}" />
みたいな。
resinでは使えたけどweblogicでは使えなかった。
0344nobodyさん04/03/13 22:33ID:???
スクリプトレットなら使えるよ
0345nobodyさん04/03/13 23:15ID:OCTfOcMT
スクリプトは使えると思うけど、どうやってformをsubmitするんでしょう?
0346nobodyさん04/03/19 03:27ID:???
JavaScriptでフォーム送信するなら、
<html:link>つかう必要ないだろ
<A>で良いだろ
0347nobodyさん04/03/19 21:20ID:???
そんな本当のこと言ったらhtmlタグはほとんどいらんぞ。
0348nobodyさん04/03/20 05:19ID:???
一番いらないのは<html:html>ではないかとw
0349nobodyさん04/03/20 11:15ID:???
beanやlogicは便利だけど、htmlは本気で意味不明
0350nobodyさん04/03/20 14:14ID:???
<html:form>も必要ない?
0351nobodyさん04/03/20 14:41ID:???
>>348
国際化アプリで必要
0352nobodyさん04/03/20 14:41ID:???
そんなこと言ったらStrutsなんていらんぞ
0353nobodyさん04/05/15 13:04ID:iT9NId+G
Struts、確かに便利ではあるがページフローの制御がいまいちよくわからんですよ。
セッションオブジェクト使用不可な条件なんですが、これって自縄自縛っぽい状態なのか?
0354nobodyさん04/05/15 13:29ID:???
え?
その制御を楽にするためのStrutsじゃないの?
あとそれとセッションオブジェクト使用不可な条件と何が関係あるの?
0355nobodyさん04/05/15 22:18ID:???
セッションを使えないという仕様なのか?
Strutsは確か、セッションを使用しないとダメじゃなかったか?
0356tommy04/05/17 10:43ID:UlYZTV/R
strutsを使ったショッピングカートのサンプルが置いてあるサイト
あったら教えてもらえませんか?
0357nobodyさん04/05/17 20:46ID:???
なか見てないので知らないけど、説明だけ読んだらこれそうみたい。

http://sourceforge.net/project/showfiles.php?group_id=49385&package_id=80917
0358nobodyさん04/05/29 04:18ID:???
なぁ、submitボタンのvalueってつかうのか?
それも2バイト文字を参照して内部動作を分岐させているよう
なのだが・・・。
Strutsではそれが普通なのか?まったく解せないでつよ(困惑
0359nobodyさん04/05/29 11:42ID:???
は?
0360nobodyさん04/05/29 17:51ID:???
>>358
おまいの見ているソースがクソなだけ。
0361nobodyさん04/05/29 21:45ID:???
>>360 はStrutsのソースがクソと言いたいわけか・・・
>>358 Struts作ったやつらははじめ2バイト文字のことなんか
考えてなかったのだが後になってあわてて2バイト対応したためと思われ。
0362nobodyさん04/05/30 17:21ID:???
>>361
あ、Struts のソースの話か… 
0363nobodyさん04/05/31 00:23ID:???
>>362
いや、Strutsのソースじゃないよ。
>>360
ありがとう、やっぱあのSEはクソだわ。
0364nobodyさん04/05/31 23:10ID:???
それって、複数あるsubmitボタンのどのボタンを押したかを判定してるのか?
strutsでそんな機能があったはずだが。
0365nobodyさん04/05/31 23:18ID:???
>>363
Struts の org.apache.struts.actions.LookupDispatchAction の話じゃないのか?
0366nobodyさん04/06/11 14:14ID:pbSttBHh
質問させてください。
Struts1.1でValidatorを使ってるんですが、
JSPで1つのacitonの中に更新ボタン、クリアボタン、戻るボタンがあります。
更新ボタンが押されたときはValidatorで入力チェックを行い、
他のボタンが押された場合はValidatorが効かないようにしたいのです。

今後携帯にも展開する予定なのでJavaScriptは極力避ける方針なのですが、
どのようにすればよろしいでしょうか?

actionを分ける事も考えたのですが、改行されていまうため、悩んでいます。
0367nobodyさん04/06/11 14:20ID:???
>>366
html:cancel
0368nobodyさん04/06/11 14:24ID:???
>>367
本当だっ!ありがとうございます!!
助かりました(^^
036936604/06/11 15:52ID:???
html:cancelに関して、もう1つ質問させてください。
propertyに値を指定するとValidatorを回避できないようですが、
1つのaction内にhtml:cancelを複数設置して、actionクラス側で判定する事は可能ですか?
037036604/06/11 15:54ID:pbSttBHh
例えば「クリアボタン」と「戻るボタン」を設置したい場合などです。
0371nobodyさん04/06/11 16:00ID:???
>>369
org.apache.struts.actions.LookupDispatchAction
037236604/06/11 17:57ID:pbSttBHh
>>371
ありがとうございます。
試してみますm(_ _)m
0373nobodyさん04/06/11 19:11ID:???
>>367 >>371かっこえぇ。惚れた。
0374nobodyさん04/06/12 14:35ID:???
すぐ上>>365で話題になってるんだけどな
0375nobodyさん04/06/13 00:03ID:???
struts-facesってうごかんじゃないかー
0376nobodyさん04/06/16 23:51ID:zsyyEODZ
質問なのですが、検索結果を、strutsの<logic:iterate>タグを使用してJSPに表示しています。

そこで、例えば検索結果が100件あったとして、そこから30件ごとに分け、googleのように次の〜件
とするには、どうすればいいでしょうか?
iterateでlengthの値を30にしても、30件しか、もちろん表示されません。

いったい、どうすればいいのかわからないです。
難しいですが、分かる方は、ぜひ教えて欲しいです・・・・・・。
0377nobodyさん04/06/17 00:11ID:???
>>376
>iterateでlengthの値を30にしても、30件しか、もちろん表示されません。
30件ごとに分けたいんだろう。なのに
>30件しか、もちろん表示されません。
というのはおかしい。
言いたいことはわからないでもないが、人にものを伝えるときはもっと気を遣え。ばか。
offsetつかってスタート地点を決めればいいだろが馬鹿莫迦バヵ
037837604/06/17 00:28ID:jy0PTqdk
>>377
マジツッコミ、サンクスです。

offsetでスタート決めるのはわかりますが、offsetの値を動的に変えるにはどうしたらいいでしょうか?

あと、submitで「次の30件を表示」などを用意して、遷移先を、検索結果が表示されてる、今いるこの画面に
次の30件を表示する方法がわからないです・・・。

説明下手でスマソなのですが、宜しくお願いします〜・・。
0379nobodyさん04/06/17 12:37ID:???
>>378
logic:iterateタグの説明をよく読みましょう。
ttp://jakarta.apache.org/struts/userGuide/struts-logic.html#iterate
ポイントはoffsetに指定するのはInteger型のJSP Beanということ。

ちなみに、ドトネトにはDataGridコントロールがあるので、
この辺はすごく楽だねえ・・・。


ところで、普通の画面は作れるの?まずはそこから始めた方が・・・。
0380nobodyさん04/06/17 20:07ID:???
こんなのもあります。
http://jsptags.com/tags/navigation/pager/index.jsp
0381nobodyさん04/06/17 22:49ID:???
>>379
ドトネトでなくても、ADOなんかだとページ単位で切り分けるの簡単だよな。
こーいうの標準で用意してくれりゃいいのにね。

>>380
面白いね
0382nobodyさん04/06/18 02:59ID:???
>>380
なるほど。面白そうだね。
038337604/06/19 01:47ID:2EKqNUkj
だめだ・・。やっぱりできない。
JSPBeanがわかんない・・、javaBeanとは違うの?
Beanの値をoffsetにいれても,、次の30件表示のリンクを押してoffの値を、変化させる方法がわかんないです・・。

Servletでもいいので、いいサンプル載ってる所ありませんかね?
ぶっちゃけ、Servretでも、できない・・・。
0384nobodyさん04/06/19 18:32ID:pMTsomP7
>>387
ぶっちゃけなんでもいいんだよ。数字(で構成された文字列)が返ればね。

offset="<%=anyBean.getOffset().toString()%>"
でも
offset="<%=anyIntegerInstance%>"
でも
offset="<%=anyIntegerInstance.toString()%>"
■ このスレッドは過去ログ倉庫に格納されています