《Struts》

このエントリーをはてなブックマークに追加
1デフォルトの名無しさん
オープンソースStrutsがいい感じです。

Struts
 http://jakarta.apache.org/struts/
Ja-Jakarta
 http://www.ingrid.org/jajakarta/struts/
同感なんだが……
2ゲットずさーじゃないの?
じゃあ、4 ゲットずさー
こんなスレありますけど。

《The Jakarta Project》
http://pc.2ch.net/test/read.cgi/tech/1019996589/
なら、こんなスレもある。

Servlet/JSP のフレームワークを語るスレ
http://pc.2ch.net/test/read.cgi/tech/1001950590/l50
strutsの話題は絡みにくいからいいんじゃない。
とりあえず、読み方を教えれ。
いまさらだな。
すとらっつ
11デフォルトの名無しさん:02/05/31 23:31
このフレームワークを仕事で使ってる人っている?
>>6 が全て
>>6 を読め
>>6はまどろっこしい

ただのサーブレットラッパー。
何が MVC やねん。そんなん MVC とは言わんわ、ボケ。
XMLで定義するのがメンドクサイ。
17デフォルトの名無しさん:02/06/01 00:06
JAVAのフレームワークは全部覚えるのが大変すぎ。
便利なんだろうけど、よくできた説明書がないから、
自分で作った方が(精神的に)楽だったりする。
18デフォルトの名無しさん:02/06/01 00:31
>15(だけを対象としているわけではありません)

>>ただのサーブレットラッパー。

Strutsが提示しているこのモデルよりも素晴らしい、
皆様が作成・利用されている
Webアプリケーションフレームワークアーキテクチャについて、
このスレにおわす皆様の賢察を拝見したく存じます。

差し支えない範囲でかまいませんので、よろしくお願いします。
スツルツ
20デフォルトの名無しさん:02/06/01 00:34
>>11
使ってるよ。カスタムタグ作るの面倒で、ちょうど手ごろだったから。
理由はそれくらいだよ。中身はかなりクソだと思ってる。

特にBeanUtilsあたりのstaticメソッド呼びまくりは最悪だと思う。
まぁ、全体的に設計のレベルがそんな程度だしね。

既にあるものを最大限使うって考えれば悪くはないかな?
>>18
そういう話題なら >>6 を 100 回読み直せ。
すとらとす
2318:02/06/01 02:06
>>6のスレは以前から読んでますが、
Webアプリケーションソフトウェアフレームワークに関する
アーキテクチャのオルタナティブって提示されているようには
読みきれなかったんですが……。
100回読んでないからダメなのか。

私自身は>>20と同じような、「ちょうど手ごろ」という観点で
Strutsは使わせてもらってます。

「全体的に設計のレベル」が上がると、
どのようなアーキテクチャが考えられるのか、
(Servlet + JSP といった、BluePrintsに言うところのWeb層までのレイヤ)
自分としてはStruts以上のものを考えられていません。

なので、クソじゃないWebアプリケーションフレームワークの
有りようについて、興味があって書き込んでました。

厨房ネタですまん。Strutsとかのフレームワークと
WebSphereやJBossみたいなアプリケーションサーバ
とは一緒に使えるものなの?
 どうもフレームワークというやつはアプリケーション
サーバで提供されている機能みたいな気がするんだけど。

(月末締めの納品物件やっと作り終わったので寝れる。)
>> 16
GUIで設定するツールがあったはず。詳細は知らん。

>> 20
カスタムタグってStrutsではビュー関連しか同梱されてなかったけど、
Apatchの別プロジェクトでビジネスロジック周りのタグリブもあったよね。
みなさん。タグリブどの程度使ってますかー?
26デフォルトの名無しさん:02/06/01 12:38
>>24
アプリケーションサーバには依存しないで使えるよ。
なにはともあれ、深夜までお疲れ様でした。
2720:02/06/01 13:12
>>23
Strutsの概念的な設計はそんなに悪くないと思うよ。
というか、昔から長い間使われてきた手法だし。

設計がクソってのは実装に関する設計って意味ね。

今は結局StrutsをカスタムタグとURLのマッピングだけに利用して、
それ以降のビジネスロジックに対するイベント通知を制御するような
フレームワークを自作して使ってます。

オマケ機能としてEJBに似たトランザクション管理、入力値のチェック、
ログ管理、メッセージをDBで管理、SQLをXMLに記述してソースから
追い出すといった機能も付けたけど(笑
>>27
SQL を XML でって、俺も昔やろうと思ったんだが...
シングルクォートのエスケープがウザすぎて使い物にならないと思うが。
2918:02/06/01 15:17
>>27

Strutsのアーキテクチャ(所謂MVCmodel2)がそれほど悪くない、という点ではagreeです。
また、「実装に関する設計」がクソ、という点についてもagreeです。

プレゼンテーションや画面遷移、入力フォームの
コントロールWeb層までのベース(まさにフレームワーク)としては
大いに利用させてもらってます。

28にもありますが、SQLをXMLでハンドルするって、
難しいなあ、と感じているのですが、解決のコツとか、気をつけるところってあります?

トランザクション管理は、いまはJDBCのwrapperみたいな感じで対応しているのですが、
EJBライクな方法のほうが良いんでしょうか。
EJBは勉強不足なので、ちょっと調べてみようと思います。
本当にあれ使ってる人達がいるんだな
最初見たときは JDBC 以下のクソインターフェースだと思ったが。
31デフォルトの名無しさん:02/06/01 15:35
>>30
お前の使ってる素晴らしいインターフェースを教えれ
3220:02/06/01 15:57
>>28-29
SQLのサポートはいろいろ考えたんだけど、かなりシンプルな姿に落ち着きました。
JDBCでめんどくさいのってSQLを文字列リテラルで扱わなきゃいけないのと、
結果セットからいちいち列を取得してビーンに反映させる部分なんで、
その部分を簡単に扱えるようにしただけです。

最初はエンティティとリレーションを定義して・・・って感じで考えてたんだけど、
DB毎に構文違ったりするし、条件なんかは逆にわかりにくくなりそうだったんで。

<query name="emp.select" type="test.Employee">
 <column name="ename" property="emoloyeeName" />
 <column name="hiredate" property="hireDate" />
 SELECT ename, hiredate FROM emp WHERE empno = :empno $condition
</query>

実行時にパラメータを渡すことで、:empnoは?に、$conditionはSQL文に
展開して動的に条件を追加したりできるって感じです。で、SQL投げると
指定したクラスのインスタンスをコレクションに入れて返してくれる、と。

トランザクション管理は、ビジネスロジック部分の呼び出しを完全に包める
構造になってるので、フリーのJTS実装を使ってEJBもどきをしてます。
>>32
やっぱ WHERE 句って↓みたいに書くわけ?

〜 WHERE FLAG = '0' AND AMOUNT > 100 AND HISTORY < 10
3433:02/06/01 22:13
う、エンティティが利いてしまった

〜 WHERE FLAG = &apos;0&apos; AND AMOUNT &gt; 100 AND HISTORY &lt; 10
3524:02/06/01 22:36
>>26
まじめに答えてくれてありがと。来週からちょいと暇になるので
このあたりも調べてみるわ。
36デフォルトの名無しさん:02/06/02 03:06
>>32
実行の度にXMLを呼ぶようなつくりですか?
重くないかなと考えますが。
>>36
一回だけXML読み込んで対応するクラスに突っ込み、そのクラスを使いまわすとか、
Singletonで構成して読み込むのを一回だけにするとか、
そこらへんは何とでもできるのでは?


|
|⌒彡
|冫、)  / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
|` / < Struts?
| /   \_________________
|/
|


|
|  サッ
|)彡
|
|
|
39デフォルトの名無しさん:02/06/02 14:09
>20
Joinとかも扱えるの? Viewを定義して逃げるとか?

自前でXMLを書くのがめんどくさかったので、DBのスキーマ読み込んで、
Beanと基本的なSQL発行するクラスを自動生成する仕組みを作ってみた。
まだ実用はしてないけど。

ところでJTSのフリー実装ってどこにあるのでしょう。くれくれで申し訳ないですが。
4020:02/06/02 23:12
>>33
シングルクォートはエスケープする必要ないのでは?

〜 WHERE FLAG = '0' AND AMOUNT > :amount AND HISTORY < :history
といった感じになります。比較演算子はどうしようもないので。

>>36-37
定義ファイルのリソース名をキーにしたSingletonでXMLの解析とSQL文の分解まで済まして、
使うときはパラメータやJDBC接続を格納するオブジェクトにアタッチして使うようにしてるので、
パフォーマンスの問題はほとんどないと考えてます。・・・実測はしてませんが(^^;

>>39
SQLで書ければ何でも使えると思います。大した処理はしてないので(笑
VIEWで定義するのも手でしょうね。以前のプロジェクトではそうしました。

JTSのフリーの実装はTyrexっていうトランザクションサーバを使ってます。
Tomcat 4.0以降にも組み込まれてるんですが、接続プールすら使えないので
自力で設定しないと意味ないです。商用ではWebObjectsが使ってるらしいです。

必要なかったので検証してないですが、分散トランザクションも出来るみたいです。
ただし、0.9.7は使わない方がいいです。マルチスレッドの時にコミットがコケます。
4139:02/06/03 00:27
>40
情報ありがとうございます。今度触ってみよう>Tyrex
from句をXML上にべたで書いてたんですね。見逃してた・・・^^;
>>40
こういうのあったんですね。>Tyrex
今度いじってみます。

ObjectWebのプロダクトとかぶってる部分も多いけど、
あっちと比べて性能的にはどうだろう・・?
43デフォルトの名無しさん:02/06/04 14:05
ちょっと質問です。
Strutsで、ActionClass以外の場所からDataSourceにアクセスするには
どのようにしたらいいんでしょうか?
Strutsのドキュメントに「ActionClassにBizLogicを書くな」といわれ
ActionClassからDB接続部を切り離したいのですが、切り離すと空の
DataSourceがかえってきてしまいます。。

識者の方々、どうかご助力を・・・
44デフォルトの名無しさん:02/06/04 22:38
やっぱりStrutsってマイナーなのね
45デフォルトの名無しさん:02/06/05 21:32
>>43
そんなにClassForNameがイヤなのか?
46デフォルトの名無しさん:02/06/06 00:01
>>43

DataSourceへの参照を持つ、ビジネスオブジェクトに対するwrappe
のようなrコンテキストオブジェクトを、Actionからの呼び出し先に渡す、
みたいなやり方はどうでしょう?
47デフォルトの名無しさん:02/06/09 07:41
age
48デフォルトの名無しさん:02/06/11 23:20
>>42
Strutsの次のバージョンからDBCPとかいうのに変わるらしいYO
49デフォルトの名無しさん:02/06/12 21:43
BeanUtilsつかってる人いますかー。
50デフォルトの名無しさん:02/06/12 23:57
strutsというよりもjakartaのcommonじゃない?
5248:02/06/13 14:49
>>50
いや、TyrexがDBCPに変わるという話をしたんだが・・・
53デフォルトの名無しさん:02/06/14 00:44
>>49
使ってるよ。インデックス付きプロパティとか扱うのめんどいから。
でも、ConvertUtilsが最悪だから、自作のと使い分けてる(笑

>>52
それってStrutsがTyrexをサポートするって事?
54デフォルトの名無しさん:02/06/14 01:28
Web Services Developer Pack check out !!

55デフォルトの名無しさん:02/06/14 22:54
>>54

What's this?
57デフォルトの名無しさん:02/06/16 15:59
定期age
58デフォルトの名無しさん:02/06/16 19:25
スレちがいな気もするけど、永続化ってみんなEntityBean使ってる?
EJB2.0仕様でツールサポートがあればそこそこ使えるような気がしてるんですが
それともJDO待ちですか?
>>58
ツールサポートって、JBuilderのEJBデザイナじゃだめなの?
簡単にEntityBeanとか、EJBを作れるんだけど...
6058:02/06/17 23:16
>>60
Enterprise版なんて高くて買う気しません(涙) IDEはeclipse使ってるし・・・
ところでJBuilder、2.0仕様対応したんですか?
昔試用版を使ったときは、1.0仕様に独自仕様追加して無理やり関連サポートしてて、
もの凄く嫌だった記憶があるです。
61デフォルトの名無しさん:02/06/22 10:29
age
62デフォルトの名無しさん:02/06/25 13:19
>>60
Eclipseってどうですか?
6358:02/06/26 00:27
>>62
JavaのIDEとしては軽くて機能も十分です。詳細はeclipseスレ見てね
Struts用のアドインあるらしいですね。と無理矢理Strutsネタに戻してみる

JavaWorld見ながらStruts弄ってみたけど、リフレクション多用してるからかデバッグ時が面倒。
Formのパラメータ名とか間違ってたりすると、どこが悪いのかわかんなくなっちゃう。俺が慣れてないだけ?
いまいち盛り上がらないね。
個人的には業務開発で使用した話とか興味あるんだけど。


>>62
struts-consoleのプラグイン対応版が早く出てほしいね。


62>63
>>60
JBuilder6とJBuilder7では、EJB2.0に対応しているそうです。

「独自仕様」の部分は、言っている意味がわかりません。
2.0仕様が確定するまで1.xベースで補うべき部分は「各社」製品独自の
仕様になっていたと思います。
68デフォルトの名無しさん:02/07/02 22:13
すんまへん、誰か教えてケロ…。

サーバーサイドJava初心者っす。業務で無理矢理やらされてまん。

Strutsタグでiterateってあるでしょ?
アレにindexed=trueって属性を加えると
画面上で変更した値を自動的にBeanに反映してくれるらしいんだけど
checkboxの場合、非チェック→チェック は上手く行くんだけど
チェック→非チェックは上手く行かないんです…。

誰か同様の現象が発生した人います?
>>68

外した情報自体はサーバにおくられへんから,状態が上書きされずに
残るってこと?
reset() で初期値設定するって対応をすればよいってはなし?
70デフォルトの名無しさん:02/07/03 01:17
>>69

ちょっと調べてみたら、チェックボックスの非チェックってサーバに送られないんすね。
reset()がどのタイミングで呼ばれるもんなのか、または自分でAction::perform()で呼び出すのか
ちょっと分からないんですが。
そもそも存在すら、このレス見るまで知らなかったし・・・。

初期状態でチェック状態のチェックボックスを非チェックにしてもBeanに反映されないんですよね?
てことはどれを非選択にしたかってどうやって特定するんですか?
7169:02/07/03 21:32
>>70

むー。
reset()がどのタイミングで呼ばれるかだけど、
ActionServlet#processPopulateメソッドの中。
リクエストパラメータをActionFormにコピーする前に
呼びにいってる。つまり,絶対処理されるし、開発者が自分で
呼び出すもんでもない。(呼んでもいいけど結果は…わかるでしょ)
つか,Strutsなんて単純な構造なんだから,
自分で調べたほうが早いよ。

後半の疑問だけど…
サーバに送られるのはそのリクエストごとのデータであって,
それは単にどれがチェックされているか,のデータでしかない。
つまり「前の状態がどうであったか」などというのは,そもそもそのまま
では知りようがない。
つまり,ユーザーロジックで状態をHttpSessionなりに保管しておいて,
それを比較するしかないっつーことなのれす。
# あーもちろんクライアントでのJavaScriptとhiddenフィールドを
# 組み合わせてハンドリングするってやりかたもあるでしょうけどね。
# まそのへんはお好みでやりなされ
7268:02/07/05 02:44
>>71

レス遅れてごめんちゃい。

ようやく言ってる意味が分かりました。アホですね、俺。
reset() → set〜() てな順番でメソッドが呼び出されるわけですね。
だからreset()で初期値を設定せよ、と。

色々すみませんでした。
73デフォルトの名無しさん:02/07/08 01:53
すみません。誰か教えて下され。

strutsの<html:select>タグ、又は<html:options>タグで
submit時に対応するFormBeanに選択値をセットしてくれるような属性ってあります?

あと、<html:select>タグのproperty属性って初期選択値の指定っていう意味でいいんですかね?

すんませんが誰か教えてケロ・・・・。
74sa:02/07/09 12:48
<html:radio>タグの属性valueに
どっかのClassで定義した定数とかを使いたいのですが、
どうすればいいのでしょうか?

例えば、
<html:radio name="test_radio"
property="test_id" value=<mytag:getConst key ="hoge">/>
こんな形のタグの中にタグって書けないんですか?
75デフォルトの名無しさん:02/07/11 00:12
>>73
FormBeanのプロパティ名と<html:select>のpropertyを一致させればいい。

>>74
リファレンスで [RT Expr] が付いてる属性は、
value="<%=Integer.MAX_VALUE%>"みたいな使い方ができる。
76デフォルトの名無しさん:02/07/12 01:41
>>75

レスありがとーございます。
マジで誰かの助言を待ちわびてました。

便乗してもう一つ質問させて頂きます。
上の質問の通りに、FormBeanのプロパティ名と<html:select>のpropertyを一致させる際、
option値が日本語文字列だと上手く行かなかったりします?

試してみた感じだと、option値が日本語の場合は挙動がオカシイっす。
プルダウンリストの項目を選択して、Submitしても再表示後には選択値が元に戻っちゃいます。
おっかしーなと思ってFormBeanのset〜()内でSubmitされる際に渡ってくる値を
トレースしてみたのだけれど文字が化け化け・・・。
画面上のプルダウンリストには正しく表示されてるのに変ですね。

ただoption値をアルファベットにしたら上手く動作しました。
原因知ってる人いたらおながいします。
7775:02/07/12 13:30
>>76

<option>の値で日本語の文字列渡してること自体が気持ち悪い。

他の<input>系のタグからは文字化けせずに値は取れてるの?

Servlet API 2.2系の実装だとエンコーディングの変換してくれないから、
(WebSphereだと勝手に変換されるみたいだが)ActionServlet.populate()
あたりをオーバーライドして自前で変換かけなきゃいけない。
78デフォルトの名無しさん:02/07/14 14:25
Struts+servlet+jspという組みあわせは今使っているのですが
i-modeとかいろんな端未に対応しなければならなくなりました。
どうやらXMLとxsltでやるのがよさそうですが、Strutsとそのへんって組み合わすことはできるのでしょうか?
>>78
最新のJavaWorldにXML(XSLT)によるStrutsの拡張ってのが載ってる。
叩き台としてはよいのでは?

原文記事およびサンプルソースは下から。

ttp://www.javaworld.com/javaworld/jw-02-2002/jw-0201-strutsxslt.html
8076:02/07/15 01:36
>>77

ありがとーございます!あなたは神です。
Formクラスのset〜()内でエンコーディング変換処理をかませたら上手く行きました。

またよろしくおながいします。
〉〉79
貴重な情報ありがとうございます。
JavaWorld入手して調べてみます。
82デフォルトの名無しさん:02/07/16 16:03
表現方法がわからなくて困っているのですが、
data1,data2,data…と名付けられたデータ(任意の長さ)を保持/取得する
FormBeanのメソッドはどのように書くのでしょうか?
83デフォルトの名無しさん:02/07/17 01:34
Strutsは画面遷移に強いフレームワークですが、ビジネスロジックまわりで組み合わせるよいフレームワークや部品ってありますか?
84デフォルトの名無しさん:02/07/17 10:37
>>82

FormBeanにCollection型を返すget〜()メソッドを用意して、
jspで<iterate>タグを使ってCollectionの数分回して画面表示する。

そーゆー事ではない?外してたらゴメンなさい。

85デフォルトの名無しさん:02/07/17 10:45
質問です。

ある画面のFormBeanについて、
別画面に遷移した時点でFormBeanの変数値をクリアしたいのです。

画面遷移後にまた最初の画面に戻るとFormに前回の値が残ってしまって大変です。
皆さんはどうしてますか?
86デフォルトの名無しさん:02/07/17 23:41
>>85
<action>のデフォルトはscope="session"だよ。
必要がないならscope="request"を指定すればいい。
8785:02/07/17 23:57
>>86

即レスです。
scope="request"にしちゃうと、次のリクエストが発生する時に
オブジェクトが死ぬって事ですよね?

説明不足ですみません。
あるJSP内で複数回のリクエストを飛ばすんですが、
別のJSPに遷移した時点でFormを殺したいんです。

そんな事って出来ます?
88デフォルトの名無しさん:02/07/18 00:34
>>87

もうちょっと状況を整理してサンプルコードも
差し支えない範囲で提供してくれたほうが答えやすいと思うのだが
89デフォルトの名無しさん:02/07/18 00:38
>>87
ActionBeanのexecuteでFormBeanのreset叩けないの?
9089:02/07/18 00:49
なんか読みにくいや、ごめんね
こういう話じゃないのかな?
※ちなみにstruts1.1

public ActionForward execute(...){
  //確かここでFormBeanとってきて
  //ここでなんかメインの実装して
  formBean.reset(); //別に初期化系だったらなんでも良いけど
  return mapping.findForward(...);
}
9185:02/07/18 01:11
>>90

なるほど。
ActionBeanから明示的にFormのreset()を呼んであげるのですね。
それなら全然問題なく動作しそうですよね。

>>88

すみませんでした。
今後はもう少し質問内容を考えて発言するようにしまーす。
92デフォルトの名無しさん:02/07/19 02:56
すみません、どなたか教えて下さい。

Strutsの<iterate>タグで
<logic:iterate id="item" name="○○Form" property="items">
<html:checkbox name="item" property="check" indexed="true"/>
....

といった記述をしてます。
"items"は○○Formが持つArrayListで、その個々が"item"です。
"item"クラスのcheck変数がチェックボックス値を保持する、といった感じです。

struts.jarはナイトリービルド版を使ってますのでindexedは使える状況です。

で、現象なのですがSubmit時にgetCheck()は呼ばれて画面上に表示されるのですが
チェック状態を変更してSubmitしてもsetCheck()が呼び出されません。エラーも出ません。

普通Submit時には Action::perform() → FormBean::set〜() てな感じで呼ばれるはずですよね?

頭に来て、<logic:iterate>の上に<html:text name="○○FOrm" property="hoge"/>と入れて実行してみたら
ちゃんとset〜()、get〜()は呼び出されてるようなので、原因は<logic:iterate>かと思うのですが…。

こんな説明で分かるかヴォケ!という意見はごもっともですが
ココをこうしちゃうとFormBeanのsetterメソッドは呼ばれないヨ!とか
こーゆーコツがあるんだけど、ちゃんとやってっか?といった意見があったら宜しくお願いします。
93デフォルトの名無しさん:02/07/21 01:52
>>83

あきらめてウムラウト買ってきなさい。


>>93

あれは単体で売ってないんじゃ。
ウルシステムズのコンサル込み企画でしょ。
95Struts入門者:02/07/25 00:47
Struts触って数日の初心者です。
Strutsの開発ガイドみたいな本とかサイト、サンプルアプリケーション
(最低BluePrint程度の規模)って無いでしょうか。
かなり初心者チックな悩みなんですが、どんな属性をActionFormとして定義して、
どんな属性をActionFormではないBeansとして定義すべきか、なんてことに迷ってしまったりしてます。
ActionFormに定義する属性はやっぱりHTTPリクエストのパラメータ値だけなのかな。
96デフォルトの名無しさん:02/07/26 01:44
Strutsを懇切丁寧に解説している日本語サイトはあまり無いと思います。
本家Jakartaサイトを日本語翻訳しているJa-Jakarta Projectのページは参考になると思います。
JavaWorldの5月号やWEB+DB PRESSの9月号で特集が組まれてますので、
BackNumber等でご覧になったらいかがでしょう。

ActionFormの位置付けですけど 画面の入力項目や表示用データ等を
属性として持つ、てな感じでイメージしてるんですけど どうでしょう?
表示用データは大概Beanに持たせておいて、ActionFormでBeanのAccessorを
用意する・・・みたいな。間違ってたらすんまそん。
9795:02/07/27 00:01
>>96
Struts-ML見てたら解説本が出るようなので、それに期待します。
概要はわかるのですが、Taglibの細かい使い方など細かい話が知りたいので・・・
ActionFormはやっぱりそんな感じの切り分けになりますよね。
じしんなかったので。ありがとございます。
98デフォルトの名無しさん:02/07/27 10:14
>>95
ここなんてどうでしょう。
入門Struts -- http://www3.coara.or.jp/~agt/struts/

ActionFormは画面からの入力項目を容易に受け取るためのものです。
Taglibですが、ちょっとややこしいJavaScriptを使う際はかえって邪魔かも知れません。
私は画面遷移とActionFormの部分のみを用いていました(Validationも使ってなかった)。
99100:02/07/29 04:49
100!!
100デフォルトの名無しさん:02/07/29 14:06
Web+DBの9月号、
showMessage.jspのscopeがapplicationになっているのはどうしてでしょうか?
これをrequestに変更するにはどうすればよいのでしょうか?
101デフォルトの名無しさん:02/07/30 12:56
すげ〜。

気が付いたら100突破してる…。
102デフォルトの名無しさん:02/07/30 13:26
>>100
掲示板を閲覧する人全員に参照できるようにです。
scopeをrequestにしても一度のセッションで破棄されるので意味がないと思われます。
ただこのままだとscopeがapplicationに格納されてるセッションオブジェクトが
肥大化してしまってリソースの無駄にもなるし、servletを終了するとデータが消えてしますので
DB等に格納する必要がありますね。

>>101
スレ立てから二ヶ月で 100 というはどうなんだろう。
104デフォルトの名無しさん:02/07/30 16:30
>>103
色々な意味で すげ〜て感じ?

参考文献や役に立つサイトってあんまり無いから
Struts技術者って苦労してると思う。
このスレがそーゆー人達の駆け込み寺になってくれる事を祈りますよ。

105デフォルトの名無しさん:02/07/30 19:49
>>102
レスありがとうございます。
ですが、私の質問の仕方が不適切だったようです。
おっしゃる通り、データの保存はDBに変更したので
掲示板の情報をJSPで表示後に自動的に削除されるようにrequestで登録しようとしました。
そこで疑問が発生しまして、

質問1:
struts-config.xmlで scope="application" と指定されていないにもかかわらず、
scope="application"で取得できる理由が不明です。

<logic:iterate id="oneMessage" name="gourmet" scope="application">

…資料不足なのですが、scope="application"を取ってもscope="application"
で取得できているようなのでデフォルトのscopeがapplicationなんでしょうか?

質問2:
struts-config.xmlに対して
<actionpath="/postMessage" type="PostMessageAction" name="postMessageForm"
scope="request"
^^^^^
input="/postMessage.jsp" validate="true">

showMessage.jspに対して
<logic:iterate id="oneMessage" name="gourmet" scope="request">

としたのですが、以下のエラーメッセージが表示されてしまいます。
これはどのように設定しなおせばscopereがquestで送れるのでしょうか?

Apache Tomcat/4.0.4 - HTTP Status 500 - Internal Server Error
javax.servlet.ServletException: Cannot find bean gourmet in scope request

またレスを入れていただけると助かります。

>>104
本当に。JavaWorldとかWeb+DBで疑問に思っても聞ける人がいないし
参考となる書籍も少ないし、なかなかつらいところがありますね。
このスレが発展し、後に続く人がより理解できる手助けになる
良スレになればいいと心から思います。
106デフォルトの名無しさん:02/07/31 00:55
107デフォルトの名無しさん:02/08/01 10:56
すみません、誰か教えて下さい。
Strutsのtemplateタグを使用しているのですが、templateのinsert元で何らかの変数値をputした時
呼び出されたtemplate側では、その値を<template:get name="XXX"/>で取得する事が出来ますよね。
この値を<logic:iterate>や<logic:lessThan>タグ等で使用したいのですが、どうすれば良いのですか?
例えば、<logic:lessThan name="formName" property="count" value="XXX"/>のように
value属性に、呼び出し元からのパラメータを突っ込みたいのですが・・・。

すみませんが、宜しくお願いします。
>>107
<template:get>にその機能はない。
適当に継承してカスタムタグ作れ。
109デフォルトの名無しさん:02/08/01 13:17
マジすか・・・。
それじゃあtemplateでjspを渡すぐらいしか役に立たないんですね。

レス有難うございました。時間を無駄にせずにすみました。
110108:02/08/01 18:08
>>109
つーか、そんくらいのタグ作れよ・・・

<template:get>と<bean:define>を組み合わせるくらいじゃん。
defineの方を基本クラスにすると簡単にできそうな気がする。
111デフォルトの名無しさん:02/08/02 12:00
手痛い助言、ありがとうございます。

タグの自作は前向きに考えますが、そもそも現状のtemplateってどんな使われ方が普通なんですか?
色々調べた感じだと、単にjspを呼び出してるだけのサンプルが多いですよね。
後は、文字列を渡してやるぐらいとか。
112108:02/08/02 13:32
>>111

想定してる使い方はHTMLのフレームみたいにJSPの入れ子をするためじゃない?
実装はスタック使ってるから何段階でもいけるみたい。普通はしなさそうだけど。

>>110でタグ作れって書いたけど、実現方法は他にもあるよね。
putする側がrequestスコープに値を突っ込んでおけば参照できるし。

でも、pageスコープ間でのコピーを行うようなタグを作る意味はあると思うよ。
書く位置も<insert>の内側になるから、他と意味的な区別がつきやすくなる。
113デフォルトの名無しさん:02/08/02 19:12
ふむふむ。貴重な意見ありがとうございます。
taglibの実装ってどうやるのかと悩んだのですが、
ちょっと試しに作ってみる事にします。

それにしてもtaglibの実装に役立ちそうなサイトってあまり無いですネェ。
とりあえずはStrutsのtaglibソースを参考に実装しますが…。

色々な意見、ありがとうございました。
114デフォルトの名無しさん:02/08/03 20:19
質問です。

Struts1.1から使えるようになったSubApplication機能を使いたいのですが、
サブアプリ(subapp)で定義したアクション(subaction)を呼び出す以下のようなformを含む
JSPを表示しようとした場合、JSPコンパイルエラー(Cannot retrieve mapping for action /subapp/subaction)
になってしまいます。

<html:form action="/subapp/subaction.do">
<html:submit> submit </html:submit>
</html:form>

以下のようにhtml:linkでsubactionを指定した場合、JSPは表示され、
リンクsubactionをクリックすれば、/subapp/subactionが呼び出されます。

<html:link page="/subapp/subaction.do">
subaction
</html:link>

が、subactionの遷移先が同じJSPの場合、2回目以降の表示時に

<html:link page="/subapp/subapp/subaction.do">
subaction
</html:link>

のように、html:linkの参照先pageがおかしくなる現象が起こります。

html:formからsubactionを呼び出す方法をご存じの方、
リンク先がおかしくなる現象について解決方法をご存じの方、
いらっしゃいましたら、ご教示願います。

SubApplication機能についてはここを参考にしました。
http://homepage2.nifty.com/ymagic/struts/realindex.html
Jakartaスレがつぶれてしまったのでこちらに書きます
JXPathって今日初めて知ったのですが、すっげぇ感動しました
データの辿り方を文字列でパラメタ化できるのが凄い。使いたい。
でもどう使うんだろう?使い道が思いつかん・・・・
116デフォルトの名無しさん:02/08/14 19:38
定期age
117デフォルトの名無しさん:02/08/15 04:13
1.1b2age
118デフォルトの名無しさん:02/08/15 04:30
>>115
w3c.org の XPath仕様のJava版でしょうか? (DOMのJava版JDOMみたいな関係を想像しますが)


XPathの場合、XMLタグの階層構造のパターンマッチング機構を提供しており、
仕様の最終目的は 「XML データベースの検索言語」(RDBのSQLみたいなもん)
です
いつになったら1.1がリリースされるんだろうね。


結構内容が変わってる(追加された機能や1.0系から構成が変わった)し、
まだまだリリースまでは程遠いのかな?
いいもの見つけたよ
http://easystruts.sourceforge.net/
12195=115:02/08/16 15:57
Struts本買ったが、日本語訳が余りにも痛すぎるよぉぉヽ(`Д´)ノウワァァァァァァァァン
>>118
XPathのインタプリタらしいです。捜査する対象(Domなど)が抽象化されていて、
Dom以外のオブジェクトもXPath式で辿れるそうです。
ttp://www.terra-intl.com/jakarta/commons/jxpath/index.html
JavaBeansを辿る機能が使えるかなぁと思ったんですが・・・
123デフォルトの名無しさん:02/08/17 13:15
>>121
和本はオラ入を待つのが吉だと思われ。
124121:02/08/17 19:57
>>122
Yes!
>>123
おらいりが出すのですか!ちぇっくしまつ
125デフォルトの名無しさん:02/08/17 20:03
クロレッツ
>>123
待ちきれないなら、こっちを見みてるとか

ttp://direct.ips.co.jp/book/Template/Goods/go_BookstempGR.cfm?GM_ID=1599&SPM_ID=1&CM_ID=004000G25&PM_No=&PM_Class=&HN_NO=00420

1章分しかないけど、Strutsについて書いてあるそうだ(書籍内容未確認)

あとはの入門記事系は雑誌のバックナンバーとかかなぁ・・・・?

・JavaWorld
・WEB+DB Press
・Software Design

とか。


まぁ、おら本も訳者次第では危ないらしいからねぇ・・・・・
s/あとはの入門記事系は/あと入門記事系としては/
128デフォルトの名無しさん:02/08/20 10:57
すみません、質問していいですか?

submit時に対象Formに対して target="_top" と指定出来ますが、
この指定をaction::perform()メソッド内で設定する事は可能でしょうか?
>>128
formのtargetをperform()から動的に切り替えたいって意味?

そうなら、requestあたりにtargetの文字列突っ込んで、
<html:form target="<%=取得コード.toString()%>">
みたいな感じで出来るんじゃない?
130128:02/08/20 18:29
>>129
レス、ありがとうございます。

実は各画面がframesetによる複数JSPから構成されてるんですよ。
で、framesetタグを定義してる親jspから各子供jspをframe定義してると。
その場合、親jspにはformが無いのでtargetの指定って出来ませんよね?
どうすれば良いんでしょうか?
フレームを使ってるとstruts-config.xmlもバシバシ肥大化してくし…かなり鬱です。
131129:02/08/20 19:07
>>130

多分勘違いしてるんだろうけど、何がしたいのかよくわからん。
子フレームのformをsubmitした時に親フレームを上書きしたいの?

>フレームを使ってるとstruts-config.xmlもバシバシ肥大化してくし…かなり鬱です。

これは同意。template系のタグ使うと改善されるかもね。
132128:02/08/20 19:33
>>129
素早いレスに感謝感激です。

子フレームのformをsubmitした時に親フレーム毎切り替えて
別の親・子フレームを表示したいんですよ。
で、submit時にAction::perform()でロジック判定して、
OKの場合、別の親・子フレームに遷移する。NGの場合はそのまま。
submit時にtarget指定しちゃうと無条件にframesetが壊れちゃうじゃないですか?
で、遷移先の親フレームのtargetをtop指定に出来ないかなぁと思いまして。
通常、こういう場合はどうすればいいんでしょう?
133124:02/08/21 02:12
>>132
真っ当な方法では無理だと思われ。
素直にtemplateタグ使えば?
134デフォルトの名無しさん:02/08/21 02:33
>>124
・・・真っ当な方法では無理ですか。

templateタグを使っての実現方法がよく見えてこないんですが
具体的にはどういった感じで実現すれば良いんでしょうか?

もし良かったら、簡単に教えて頂けますか?
135129:02/08/21 10:06
>>134
その手の画面遷移はやっかいだよねぇ・・・

前にそんな遷移を作ったことあるけど、一箇所だけだったんで、
成功した時にはスクリプトだけのHTMLを返して、強制的に
フレームを更新するような作りにして逃げました。

templateは、<frameset>の使い方に似たJSPテンプレートに
ページ毎のJSPからパラメータ渡して<frame>に相当する
JSPをincludeさせてくって雰囲気。

こんな遷移が大量にある場合は検討するといいかも。
136128:02/08/21 10:42
>>135
アドバイス、ありがとうございます。

親Frameのjspから、各小Frameのjspをtemplate:instertで
includeするって感じでしょうか?
これでうまく行くかどうかを検証したいので、
ちょっと、今日試してみようと思います。

有難うございました。
137デフォルトの名無しさん:02/08/28 00:20
age
いまいち盛り上がらないね。
139デフォルトの名無しさん:02/09/04 13:18
そうだね。
Strutsってあまり人気ないのかなぁ…。
斜め読みしたけど、ミソはサーブレットで受けて制御(C)をまとめるってことかい
141デフォルトの名無しさん:02/09/04 13:39
Strutsを使う事で、MVCが明確化するのは良いと思う
☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆
イー便茶役員一覧

社長池上(テンプスタッフを追い出された、人材派遣業ヒューマンアイも経営し、私腹をこやしている)
菅原(住商情シスで仕事をしたと威張ってる、偽EVS Framework開発者として、JavaONEで演説予定)
山本(リクルートをDrop outして人材派遣業という、いわゆる使えない社員の王道、ヒューマン偽アイコンサルタント)
児玉(なんだかんだで、結局辞めた)

こんなやつらは、ゴミ以下のイーベンチャー ゴミサポート会社!!
(ついでにゴミSE巡回サービスもよろしく!!)
☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆
>>139
国内MLもうごいてるんだけどね。
最近は厨な質問ばっか。

144デフォルトの名無しさん:02/09/05 12:51
ふ〜ん。
でも、Strutsの場合情報源が少なすぎるからねぇ。

もう少し浸透してくれば、状況は変わるでしょう。
で、実際のところStrutsって流行ってるのかな?
最近は、雑誌等でも特集記事が組まれる事が多いけど
少なくとも俺の周りでStrutsを使ってる人間は居ない…。

このスレもさっぱり盛り上がらないところを見ると…
145デフォルトの名無しさん:02/09/06 09:19
ほとんどが「Strutsベース」って感じで使われてるからね。
pureなStrutsっつーのは見かけにくいんでは?
146デフォルトの名無しさん:02/09/06 10:34
>>145
それはtaglib拡張とかって話?
147143:02/09/07 00:33
つか、掲示板や小規模なショッピングカートレベルならともかく、
会社が業務システムを構築するような規模のものの場合、
素のStrutsを使おうってのがそもそも無理でしょ。

>>20-40を見るとわかると思うけど、
他にも素で使おうとするには足りない部分が多すぎる。


ま、あくまでもベースとしてだけ使えってことなんだろうね。
148デフォルトの名無しさん:02/09/09 13:25
Strutsのlogic:iterateについて質問です。

ActionFormクラスにListのメンバ変数を持たせておき、
<logic:iterate id="item" name="form" property="list"/>
<html:text name="item" property="text" indexed="true">
</logic:iterate>
のように通常記述すると思います。

現在、つまづいているのはiterateを入れ子にした場合に
indexed属性が正しく機能するのか?という部分です。
ActionFormクラスが持つListの各要素にListを格納して、、
二重ループでぐるぐる回したいのですが、どうもindexedが正しく機能しません。

すみませんが、どなたかアドバイスを宜しくお願いします。
どっかで見たことあるような質問だ。
このスレだったか、ML だったか。

答えは覚えてない。すまん。
こんなのが開催するらしい。

ttp://www-6.ibm.com/jp/software/websphere/seminar/20021001.html
151デフォルトの名無しさん:02/09/10 13:19
>>150
おお〜!情報提供サンクス。行ってみたい。

でも、内容はどうなんでしょ?
技術的に突っ込んだ話が聞けるなら行きたいけど、
概要説明程度のセミナーならパスだなぁ。
ActionFormに保持したい情報を詰め込んでいったら
えらくActionFormが肥大化してきました。
execute(perform)の中で次の画面に渡したい情報をActionForm
に書き戻してるんだけど、これって良くない設計?
(context.setAttributeを使うべきなのでしょうか・・・)
Struts情報は増えてきたけど設計に関する情報はまだ少ないので悩んでます。
153デフォルトの名無しさん:02/09/24 23:45
age
>>152
複数画面にまたがった情報を保持できるActionFormなら
インスタンスをsessionに入れるようにしておけば
わざわざ埋めなおす必要なんてないんじゃないの?
>>152
スコープをsessionなりapplicationなりにすれば
リスエストの度に埋めなおす必要はないと思いますが・・・?
>>150のセミナー行ったヤシいる?
157デフォルトの名無しさん:02/10/01 23:45
>> 156
いってきたよ。
内容はStrutsの概要、設計ガイド、Struts Extension for WebSphere、Code Campでした。

一般的な話が多かったけど、Code Campは唯一の収穫になったかな。
Extension for Strutsは期待していたけど、実際はしょーもなかった。(どこがExtensionなんだよと思った人は多かっただろう..。)

いずれ、全部フリーでソースつきで公開するっていってたね。
158156:02/10/02 01:24
自分も行ってきた一人。

>>157
確かに自分もCode Campが唯一の収穫だったんだけど、
あれってStruts Catalogの受け売りでしょ?

STXは・・・・ソースがいじってよくなりそうなら考えるって言う程度だね。
素のままでは使い気にはならない。
公開時期は10月中ごろっていってたような。
159デフォルトの名無しさん:02/10/02 01:51
>>158
Struts Catalog って、これだよね。
ttp://husted.com/about/scaffolding/catalog.htm

Code Campでも話があったけど、
Link to Only Actions ってみんなちゃんと守ってる?

うちのプロジェクトは全然、そうなってないんだけど。
161156:02/10/03 01:24
>>159
いちおうそれはできてる。<Link to Only Action

そのかわり、うちのプロジェクトではActionクラス内で
複数(2〜6つ)のビジネスロジックをif文で条件分岐させてる。

画面にActionが対応して、
画面内のボタン/リンクにAction内の各ビジネスロジックが対応してって感じ。
ビジネスロジックの分岐以外はActionクラス内に記述していない。
Web固有のデータは全てビジネスロジックの中に持ち越し。

げふ。

162名無しさん@Emacs:02/10/06 15:48
画面が挿入されたら、簡単に対応できないね。このフレームワークって。
163デフォルトの名無しさん:02/10/06 20:11
初心者しつもんですんまそん。
logicのiterateってCollectionしか使えない?
HashMapでくるくる回したいんだけどさー。
どーやればよいのやら…
165デフォルトの名無しさん:02/10/06 23:05
>164
さんきーう。
っていうか、やっぱMapはkeyとvalueしか使えないのね。
valueに入れたBeanのプロパテを拾いたかったのだけど。
この間会社で次の仕事探してたら、要Struts 経験者の案件が入ってきた。
受けたい思って面接逝ったら、要るのは業務で経験したヤシだって。
良く話を聞いてみると、既に燃えているプロジェクトだった。
>165
value.hogehoge じゃダメなの?
168165:02/10/06 23:58
>167
そゆこと?
ちょいまち。

を?でけた…。なるほどー。
目か鱗が落ちた。
さんきーう。
やっぱソース読まないとあかんねー。
169デフォルトの名無しさん:02/10/08 23:47
age
170デフォルトの名無しさん:02/10/15 17:35
「オープンソースを活用しWeb開発を効率化するソフト 」
http://www.ibm.com/news/jp/2002/10/10151.html
>>170
あと1週間か>STX公開
172デフォルトの名無しさん:02/10/20 12:14
あーーーーーーーげ
>>171

IBMの無料セミナー行った人なら内容は知っているが、
そんな大層なものではないぞよ
174171:02/10/20 23:46
>>173
いや、自分もセミナー行った一人なんでそこら辺は・・・・(藁

ただ、あの機能をどんな素晴らしいコードで実現してるのか知りたいだけ。
ソース非公開・修正不許可だったらとてもつかえたもじゃない。
175171:02/10/21 02:01
STX公開

ただいまダウソ中。
176173:02/10/21 08:28
>>175

といいつつこっちもDL(笑)
しかし,型チェックってStruts1.1からのvalidatorと
かぶるよな…
やっぱりStrutsってマイナーなのね
178デフォルトの名無しさん:02/10/21 21:48
STXってなんか思ってた以上に使えそうにないなぁ。
期待していたんだけど。
1.0.2かよぉ。
180デフォルトの名無しさん:02/10/21 23:36
Extension for Struts(stx)最悪。まったく意味なし。

> Pre/Post Invocation
これが一番笑える。
単に、performメソッドを3つにわけただけ。

> Session Management
sychronized(session) してるだけ。
Tomcatだと、これがうまくいかないことを開発者は知らないと思われる。

> Screen Order Control
まるで、独自に開発したかのように宣伝しているが、
単に、Strutsで提供されているTokenのいち使用例。

> Log / Trace
単に、Struts1.02のActionServletのlogメソッドをオーバーライドしただけ。
Struts1.1ではまったく意味なし。
JRASってなに?普通 log4j使うでしょ。

> Resource Wrapper(JDBC,JMS)
これも意味なし。普通、DataSourceくらい自分でlookupするわ。
しかも、おもいっきりハードコーディングしてるし。
そもそもビジネスロジック部分に関することをStrus側で提供してどうする?

> Character Type Check
開発者は Commons Validatorを知らないのか?まったく意味なし。

あー、ダウンロードして損した。
ひさしぶりに笑わせてもらいました。
>>179

役に立ちそうもない Actionクラスの継承クラスをみると,
performメソッドでなくexecuteメソッドもあるからひょっとして、
と思ったが throws 句 をみて…
Declarative Exception Handlingが使えんじゃないか。
IBM < HAL
これ(stx)本当にIBMがつくったの?
どういうつもりだったんだろ...。
新入社員への罰ゲーム かな?
>>180
俺もさっき一通り見て くすすっ と笑わせてもらったのでちょいと書かせてもらおう。

> Pre/Post Invocation
> これが一番笑える
同感(笑) しかもWsxHookableAction.javaって使われてない残骸みたいだし

>> Session Management
>sychronized(session) してるだけ。
これもなあ,ふつー誰でもお手軽にやることを上位クラスのテンプレートメソッドにいれただけだもんなあ… でも,Tomcatだとうまくいかんというのは初めて知ったよ,覚えとくよ。

>> Screen Order Control
>まるで、独自に開発したかのように宣伝しているが、
>単に、Strutsで提供されているTokenのいち使用例。
だよなあ…単純なTaglibと連動させてTokenの使い方を親Actionクラスに入れちゃいましたというだけ。

ところでなんかコード見てると @author Hiroyuki Tarusawa って書いてるのと書いてないのが
あるけど,これって"樽沢広亨"さんだろうな。たまにWebSphereMagazine とかDBManazineに名前を見る(雑誌記事とかに既にオープンな人で名前バレ
してるみたいだから書いても別にいいでしょ)
# WebSphereMagazine第2刊でStrutsについて座談会記事のメンバーの一人にも入ってような気がする…立ち読みですましてたので曖昧だけど。

>JRASってなに?
IBMのWAS(WebApplicationServer)が持っているロギング機構,だったと思う。たしか管理コンソール上とかに出力記録されるのに使ってたはず。
どうでもいい話だが 各種クラスの接頭語の Wsx って何だ。 Websphere Struts eXtension とかそういうあれか。

結論として,拡張というには小さすぎる。こんなんだったら WASTみたいな方面でもっと力を入れてくれってとこだな。
あと,次のWSADでStrutsウィザード完備とかのフルサポートするとか。
みんな、期待してただけに、怒りたい気持ちもわかるが、
おさえろ。

Extension for Struts には確かにがっかりさせられたがが、
同じところでダウンロードできたオークションのサンプルはなかなかよくできてたぞ。
(Ant, JUnit, log4j, Commons Logging, Commons Langと結構いろいろ使用していて頑張ってる)

Tomcatでも簡単に動いてくれたし(^^;)
Logのコンソール画面がいきなりでてきたのは、びっくりした。
log4jにこんな便利な機能があったんだ。
(Struts1.02ベースなのは残念だけど。)
186171:02/10/22 03:15
みんな予想どうりたたきまくってるねぇ(藁

・Pre/Post Invocation
・Session Management

あたりなんか、セミナーの機能説明聞きながら予想していたコードそのまんまだったからなぁ。
っていうか、ここらへんはみんな予想してたでしょ?>セミナー参加者

あと、個人的に一番ウケたのは
いくつかのソースコードで日本語がハードコーディングされてる点(WsxDataSource)
会社の名前出してって公開するソースがこれかよ、と。

>>185
こっちはよいね。STXがひどすぎたから一層そう思える。
セットで公開した割にはSTX使ってないし。純粋にサンプルソースとして見れる。
そもそもこういうものを堂々と公開することがはずかしい・・・・・。
こんなのコミュニティは見向きもしねぇよ。
そもそもIBMに期待するのが間違いのもと。
>>188
eclipseはいいんだけどね。IBM。
そもそもlog4jだってもともとはIBMがJakartaに寄贈したものだし。
アメリカIBMがすごいだけで、
しょせん日本法人はだめってことが、今回のことで再認識。
>>186
すいません。恥をしのんでお聞きします。

> あと、個人的に一番ウケたのは
> いくつかのソースコードで日本語がハードコーディングされてる点(WsxDataSource)

これってsetTransactionIsolationのところのことですか?
ログだから日本語をハードコーディングしても問題ないかな?とか思っちゃうんですが、
問題有りですか?
どこらへんがバカなのか教えてください。
日本語ってこと自体がだめんですか?
>>190
Win上でビルドしたSTXのwarファイルとかをLinuxで起動させるとよくわかるんじゃないかな。
>>191
それは理由にならないぞ。classファイルになった時点で全部unicodeになるだろ?
193デフォルトの名無しさん:02/10/23 12:02
>>180
>> Session Management
>sychronized(session) してるだけ。
>Tomcatだと、これがうまくいかないことを開発者は知らないと思われる。

こんなんでホントに巧くいくのか疑問だったんだけど、
WASなら巧くいくんですね……。
Tomcatで、WSXがやろうとしいていることを実現しようと思ったら
どうしたらいんでしょう? TOKENだけで実現可能なんでしょうか?
194186:02/10/24 02:07
>>190
実はそこまで深く意識して書いたことではなかったのだけど、
一応自分として日本語をハードで書くのが嫌な理由をあげてみた。

1.ソースを記述したプラットフォームと異なるプラットフォームに持っていくときがめんどい。

 → EUCなソースをWinでコンパイルしようとしたり、その逆をやろうとすると、コンパイルでひっかかる文字がある。
   まぁ、単に文字コードの変換を掛けたり、JavaソースをUnicodeで作成するのが面倒くさいだけなんだけど。

2.仮にコンパイルが通っても文字化けする。

 → >>192はそういうけど、実際Winで作成したJavaソースをLinuxやHPでコンパイルしたら化け化けになったが・・・・
   ソースを最初からUnicodeででも作成してない限りこの問題ってなくならないと思っていたけど、そもそも根本的な勘違い?

3.自分用のツールや開発中のプロトタイプならともかく、
 業務システムや、公に公開するようなものに日本語をべたがきするのはどうかと。
 プロパティファイルをつかって国際化するか、1や2の問題が起こらないように素直に英語で記述すべきでしょ。

 → STX自体をβ以前と見ればこの点は問題ないのかも(藁

って感じでどうでしょ?

特に、1と2はJavaを初めて間もない頃にかかわったプロジェクトでえらい目に会ったことがあるので
個人的にトラウマになっているところもある(藁

他の人はここらへんに関してはどんな風に考えてるの?
>>194

>>2.仮にコンパイルが通っても文字化けする。
それはコンパイラが悪い。

ただ今回のSTXはApacheコミュニティに対してフィードバックするという話らしいので、
日本語使ってたら外人読めないジャンって感じ。

個人的にはJavaで日本語はじゃんじゃん使おうって感じなんだけど(そもそも俺日本人だし)。
アーキテクチャ上問題ないし。
>>195
> ただ今回のSTXはApacheコミュニティに対してフィードバックするという話らしいので、

(´,_ゝ`),プッ
いったいどこをフィードバックするつもりだろうか?
これをフィードバックしていたら、世界中のStrutsユーザーがフィードバックしなければいけなくなるぞ。
>>194
javac -encoding
これだけ、STXがぼろくそにいわれるのは、やっぱり名前が悪かったのでは。
Extension といいつつ、何も拡張していないからね。
そりゃーここだけでなくいろんなところで叩かれるわ。

"Strutsの間違った使用例集" - よい子はまねをしてはいけません。 -
だったら、きっと受け入れられたと思う。
199194:02/10/25 01:23
>>195
昔のプロジェクトの時はHPのJDK1.1.8&OracleAP鯖の昔のバージョン(8iとかよりずっと前)だった。
単に>>197の言うオプションを指定すればすんだような気がする......

>>197
JDKのドキュメントみて確認。
今度からちゃんと覚えておきます。

>>198
公開前宣伝がおおきすぎたのもあるような。
200デフォルトの名無しさん:02/10/26 11:54
>>194

結局encodingオプションを知らなかったってこと?まじ?
笑える。あほか、こいつ。
>>200
IBM社員ハケーン
202デフォルトの名無しさん:02/10/26 14:34
>>185
オークションのサンプルをTomcatで動かしてみたのですが、
あのLogの画面(LogFactor)ってどうやって出しているの?
ソース見たけどわからないよー。
めっちゃ気にいったので自分のプロジェクトでも使いたいのですが、
誰かやり方しりません?
>>202
log4j.propertiesにエントリされているorg.apache.log4j.lf5.LF5Appender

っていうのがそれじゃない?

>>203
試したところ、うまくいきました。ありがとう!
(もっと、複雑なことをしなきゃいけないと思ってたよ。..)

いいね、これ。
JDK1.4のLoggerではなく、log4jでしばらくいくことにします。
先生、質問です!

オークションのサンプルのソースみてみたら、
ビジネスロジックをInterfaceとして定義してActionクラスからFactory経由でよんでいるけれど、
そこまで徹底的にしたほうがいいのか?(そこまでの勇気はないぞ..。普通。)
ビジネスロジックの切り離しって、こういうパターンで行うのが流行なの?

Struts本家のサイトにもこういう情報がないので、
ほかに、Strutsを使ったサンプルのソースがあるところがあったらキボーン。
206デフォルトの名無しさん:02/10/28 21:29
>205
漏れそのソース見てないけど、書いてある話だけだとそんなにおかしくはないんじゃない?
J2EEパタソに則ってるのではなかろーか?
そのあたりだと、SessionFacadeとかValueObjectとかCommandとかのパタソを使うとよさげ。

>Struts本家のサイトにもこういう情報がないので、
>ほかに、Strutsを使ったサンプルのソースがあるところがあったらキボーン。
確かにちゃんとしたstrutsのソースって少ないよねぇ。今まで見てきたサンプルってActionにロジックとか
イパーイ書いてあるのしかみたことない。
漏れもみてみようかなぁ…。例のソース。
とりあえず、読み方を教えれ。
>>207
とりあえず、辞書ひけ。
>>205
オークションのソースってどこからダウンロードできるの?
おしえてちょうだいませ。
>>209
とりあえず、最初から読め。
Web Services Developer Pack check out !!
212Delフサギコ ◆A6VzDeLphI :02/11/11 10:01
http://www.zdnet.co.jp/enterprise/0211/05/nw03.html
>
>  同社によれば、新しいJBuilder 8は、Jakartaプロジェク
> トが推進するオープンソースのWeb開発フレームワーク
> 「Struts」をサポートするという。また、新バージョンでは、
> EJB(Enterprise JavaBeans)アプリケーションをテストす
> るための優れたツールが提供されるほか、最新のWebサービ
> ス標準やJ2EE 1.4仕様がサポートされるという。
>
>  ボーランドでは、新しいリリースはまた、ボーランドの
> TeamSource、ラショナルのClearCaseやConcurrent
> Versioning System、あるいはCVSとの連携を介して、コード
> の管理やデバッグを容易にしようとしている。JBuilder 8は、
> OracleJSPのようなJava以外のコードもデバッグできるよう
> になるという。

    ∧,,∧  よくわかないですが、Strutsサポートage
   ミ,,゚Д゚彡
    ミ つ旦)~~
  〜と,,,~),,~)  某タン、JBに力入れすぎで
          Delパイないがしろ杉ですー。

 このペースでいくと、SWTサポする日も近いのかな。
Struts なんて糞フレームワークサポートしてどうすんだ?
いまだにこれ使えばどんな開発でもコスト削減できるなんて考えてるのか?
これでコスト削減できるのは掲示板程度の開発だろ。
その通り。
イントラでは厳しいよね。
名前だけでも乗せときゃ競合商品に差が付く or 差を埋められるってこった。
>>215

だろうね。
イントラ要件でよく挙げられるエラーがあったらそこのフィールドの背景を赤くするだとか,
ログインユーザによって同じ項目でもdisable属性にするとかが,
そういうことが(相当回りくどいことしないと)できない。
あとこれは俺が悪いのかもしれないけど、<logic:iterate>の中で
<html:text>ってうまく使えなくない? value値がString[]を直接toString()した
値になっちゃう
217デフォルトの名無しさん:02/11/12 12:51

Strutsを使えば画面遷移の制御やフォームデータのI/Oなんかは
つくりこまなくてもいいんだから、その分の工数を
エラーフィールドの背景を赤くするカスタムタグつくるのに割けば
いいんじゃないかと思うのだが。
218デフォルトの名無しさん:02/11/12 12:51
サーバサイドアプリケーションにプラグイン機構乗っけたいなと考えてるんですけど、Struts はそれの役に立ちますか?

struts-config.xml をプラグインから読み込んで、global-forwards や action や message-resources や form-beans を追加するとかできると、使えそうだと思ってるんですけど。
> 画面遷移の制御やフォームデータのI/Oなんかはつくりこまなくてもいいんだから

その仕組みのための制約が、規模がでかくなると利いてくるのだよ。大抵最後の方で
「こんなんだったら最初から自分たちで作った方が良かったな」という結論に至る。

別に Struts だけでなく ServletWorks や WACs や INTERSTAGE などの糞も同じ。
結局「汎用化するために業務に踏み込んだ実装をしていない」「業務に踏み込んで
いないフレームワークなど工数削減にたいした効果がない」という事にようやく
世間が気づき始めた (業務が絡んだ基盤の実装はかなり大きく、どうせそれを
1から作らなきゃいけないなら同じという意味)。どれもサーブレットラッパー
作って「フレームワークだ」とか寝ぼけたこと抜かしてるだけ。
>>219
禿動
業務で使おうと思ったらStrutsなりServletWorksなりをさらにラップして
やらなければ使い物にならないからね。だったらServletをラップする方が
知識的にも実作業的にも遥かに楽な罠。

素人が慣れないServlet&Javaでフレームワークなんて作らなくても良い
から素直にMQやCICSラッパーでも作っててくれって思った。
221デフォルトの名無しさん:02/11/12 17:40
>>219
Struts1.1b2をみてると、SunのBluePrintsの素直な実装のように思ってるんですが、
Strutsによって「制約」を受けた「こんなん」じゃないものって、
どういった設計で画面制御やフォームのI/Oを克服できるんでしょうか?

Strutsごときで工数なんて減らせるか!という意見については同意です。
ただ、「業務実装の土台の土台」としてStrutsは使えるんじゃないかなと
素朴に思っているので、考えを知りたいと思ってます。
>>221
219ではないが、BluePrintsはSUNと同じくヘタレ。実務をあれでは無理だと思う。
土台の土台と言うけれど、あの実装のどこが使えるかわからん。
イントラなどであの単純なMVCが向いているか疑問。
戻るの制御や、Modal的制御をやろうとするだけでも大変だと思うが...。
223デフォルトの名無しさん:02/11/14 11:22
>>222

Duplicate Submissionは確かに問題。
しかし、だからといってServlet Wrapperを丸ごとつくるのは
車輪の再発明では? NIH症候群では。
224デフォルトの名無しさん:02/11/14 14:41
>>222
一応StrutsにはModal制御的な仕組みはついてる罠。
ActionクラスのsaveTokenとか。
>>221
漏れも土台の土台には禿同。
Struts使ってイントラ業務作ったけど、結局
ActionServlet、Action、Errorとかだいぶ拡張してまった。
Strutsで工数削減は、まあ要件しだいかな。
下忍PGがアプリ発散させちゃうことを考えたら
Strutsなりなんなりを使った方が良いことも多い、と思う。
>>224
saveTokenは知ってるよ。
でもそれでは足りないから困っているんだよ。
226デフォルトの名無しさん:02/11/14 15:27
>>225
上の方でもでていたと思うけど、連続submitについては
TOKENだけだと足りないように思う。

結局JavaScriptで画面制御しちゃったりするんだけど、
これはお寒い対応だと思っている。

どーすればいいのだろう……。
227デフォルトの名無しさん:02/11/14 17:52
>>225
IBMの出したExtenstionForStrutsはどう?
saveTokenとsessionロック使ってる風。
>>226
ボタン連打されたら無理だな。
そこはJavaScriptで耐える罠。
>>227
カスです。なんの参考にもなりません。
>>227
>ExtenstionForStruts
たんなるうんこ。
DQN社員しかいない日本IBMの作ったもんだから無視したほうがいい。

日本IBMうんこフレームワーク一覧
WACs
FormWave
ExtenstionForStruts

これらを使えといわれたら氏を覚悟したほうがいい。
NIH(Not Invented Here)症候群
「ここで発明されたものではないので、大したものではない」
という一般的考え方であり、自らの発明や創造だけに価値を
置き、他から新技術やアイデア、手法を導入することを回避
する傾向
いや、いちいち説明してもらわなくても知ってるけどね。
予算内で実際使えるものがあれば、どんどん使って楽したいけどね。

コンテナを一から作るのは対価に見合わないけど、
Strutsなら微妙なとこだな...。
>>229

ずっと以前から思ってたけど、既存フレームワークをこき下ろすのが
はやってるのかそれともけなすことで作成者より自分が偉くなった気に
なりたい奴が多いのか良く分からんな。

完璧なフレームワークなんてないがそれでもそいつが一番効率よく使えるように
使うのが仕事だろ。自分が満足できるのが欲しければ、自分で作ればいいだけだしな。
233デフォルトの名無しさん:02/11/16 10:22
>>232

仰る通りだが、それでも、
大々的に(?)発表したExtenstionForStrutsは
大したことないと思う。
だからStrutsについては手前エんとこで拡張するけどね。

WACsは評価したことないので知らない。
>>229
ServletWorks も入れといてくれ。
>>232
効率が良くなると言われてフレームワーク入れるんだろ。この発想は目的のための
手段だが、君の最後の 2 行は手段が目的になってる。
236232:02/11/16 15:48
>>235

No。
「こんな糞フレームワーク使ってられん。作ったやつはDQN」
「こんなの使うなら死ぬ」
なんて書くやつが妙に多いよな,という風に(俺は)思ったと。

つまりそれって少なくとも「自分で使う場合は開発効率を下げる(または役立たず)」と
その面々は主張してるわけだろ。

だったら解決策としては
・自分が納得のいくベターな(開発効率が良くなる)既存フレームワークを探してそれを使う

・自分が納得のいくベターな(開発効率が良くなる)フレームワークをゼロから作る,もしくは
(それこそStrutsとかのをベースに)自分で作りこむ
の2択でしょ,という意味のことを書いている。
それは,手段が目的になっているとは言わない。

(もちろん,そんなの使わず単に無視して,何も使わずにガリガリ書くやりかたがプロジェクトとして
もっとも開発上効率が良いというなら,その第3の選択肢を採用すればいいだけの話だ)

最初の疑問として俺が理解できないと書いたのは
・単に自分が満足できない (俺様の欲しいものはこんなんじゃねえ)
・俺センス的にそのフレームワークのデザインは認められねえ
というだけでひたすら否定するだけで
黙って無視(使わない),ないなら(しょうがないけど)作るという
風にはならないのはなぜなのかということ。

書きながら思いついた理由はは
「自分で作れない(作らない)けど使うと楽な面は確かにあるから
使う。けどやっぱり使っててストレスと鬱憤たまってしょうがねえー!」という
歪んだ思いの発露なのか?と思ったりもしたが,やっぱり違うか(w
>>236
ちょっと誤解してたな。「フレームワークが糞でもそれを使って楽する方法をてめぇで
ヒネリ出せやヴォケ」と主張してるのかと思った。

ただ、糞だが政治的な理由で自分たちで作りなおすことができない連中がここに溜まっ
てるわけでして (特に lβM 系が多いのはそれが理由といえる)。
>>237

そこで話が元に戻って,その「糞」ってのは
どういう意味で皆糞なんだっていってんの?って思ったんよ。

「デザイン的あるいはコード的に美しいことは一般的に正しい」
これは真だと俺は思ってる。けど,
「デザイン的あるいはコード的に美しいことが常に正しい」,
あるいは「正しければデザイン的にあるいはコード的にも美しい」,
は真じゃないでしょ。

いみじくもあなたが言ったように,
「効率が良くなると言われてフレームワーク入れる」んでしょ。
だったら極端な話,デザイン的に多少ヘボでも生産性が上がる,
開発効率が上がる,型にはめることで保守性まで確保できる,といった
メリットがデメリットを上回るんなら,俺はそれも1つの方策だと思ったりするね。

んで,その非難対象のフレームワークはどういう観点で糞なんだって
ことよ。本当に「効率がそれを採用するよりむしろ悪くなる」
ほどのフレームワークなら,いくらなんでも採用しないんじゃないのと思ってね。

# そこまで政治的な縛りってのはあんまり考えにくい(誰か反対するだろ)。
# あ,もちろん個人的にそっちよりこっちが使いやすいって話はいくらもあるだろうけど,
# プロジェクト的に判断してのレベルでね。1システムの開発担当会社が
# 複数の場合も考えて。

まー長文ですまんかったが,言いたかったのはそういうこと。

もちろん,開発効率なんてしらぬわ!つくり的にヘボならそれは価値なし!
というスタンスはありだし,雑談の話とか個人的には共感さえするyo
フレームワーク一般論は別スレでやろうよ。
とりあえず、WACs, Extension for Struts は糞 であることはソース見ればわかるが明白だろ?

もうそろそろ、Struts本来の話題に戻そうぜ。
struts-tiles はみんな使ってる?
240デフォルトの名無しさん:02/11/20 09:06
>>239

1.0.2でも使えるみたいだけど、途中から導入するのは面倒そうなので
まだ使ってません。
1.1b2(1.1はいつ?)で始められるプロジェクトがあれば
是非とも使ってみたい。

Tilesと関係ないけど
JavaWorldに面白そうな記事が載ってました:
http://www.javaworld.com/javaworld/jw-05-2002/jw-0510-struts.html
241デフォルトの名無しさん:02/11/23 20:34
Extention For Struts 1.0.1
http://www-6.ibm.com/jp/software/websphere/developer/download/wasstx.html

なんかロジックを修正しているらしい。
とりあえずダウソしてソースを読んでみます。
とりあえず頭にWsxって付けるやめて欲しい
どうしようもなく馬鹿っぽい
>>241
Extension for Struts、あいかわらずの糞っぷり。
もう公開するのやめればいいのに..。

というか、作者、あきらかにここのスレッドみてると思われる。
WsxHookableAction.java を消してみたり、sychronized(session) やめてみたり、
あきらかにここでいわれていることをぱくっているだけ。

変更点は、ソースから作者の名前を消したことくらいです。
ププ。
>>243
君は サクーシャ 派閥と反対側に居る人でつね?
>>243, 244

それは俺も思った口だ。 作者はこのスレ見てるだろ。
作者派閥なあ…そんなのがあるのかどうかしらんが
あんなのを社名使って大々的に出せるのはブランドにいるからこそなのは
間違いない

>>245
ブランドってなに?
>>246

あそこの社内用語みたいなもんよたしか。現場系の部門でなく製品担当・営業推進を
受け持つ部門の総称だな
248デフォルトの名無しさん:02/11/25 10:06
このスレはWsxのソースをレビューするスレになりました
249デフォルトの名無しさん:02/11/27 05:57
オラのこの本、洋書だけど読んだ人いる?
http://www.oreilly.com/catalog/jakarta/
感想希望。マニュアルより詳しい?
250デフォルトの名無しさん:02/11/27 10:23
>>249
挙げている書籍はAmazonで注文中なのでまだ読んでないんだけど、
サンプルぐらいは読んだ?
http://www.oreilly.com/catalog/jakarta/chapter/ch14.html?CMP=IL7015

あとは、onJava.comにも
Struts関連のアーティクルが色いろあるから読んでみては?
http://www.onjava.com/onjava/open_source/

ついでに日経ITProのMcClanahanインタビュー
http://itpro.nikkeibp.co.jp/free/NOS/NEWS/20021126/1/index.shtml
このスレの住人のコメントを希望

わけあってServletWorksとWACsをソースレベルで比較検討
しているわけだが、こいつら両方ともちゃんとしたテストしてないだろ!
なんでこんなにバグや甘い仕様がいっぱいあるんだよ!
252デフォルトの名無しさん:02/11/27 10:50
SessionIDのintern()をsynchronizedするというのには
ちとやられた感があるのだが。
つーか、ガイシュツのTomcatだとsynchronized(session)
できないってのは、結局どういう理由だったの?
まさかリクエストごとにセッションのクローン作っている
わけでもあるまい。
253デフォルトの名無しさん:02/11/27 10:56
>>251
スレ違いです:
「Servlet/JSPのフレームワークを語るスレ」
http://pc3.2ch.net/test/read.cgi/tech/1001950590/
↑こっちへどーぞ

>>252
恥ずかしながらinternを使っているソースを初めてみました。
これならどんなサーブレットコンテナでも大丈夫そうなので、
自分のところでもいただいてしまおうと思います。
Tomcatではなんでダメなのかは私も知りたい……。

>>252
sessionId,intern()
は、一年ほど前から常識だよ。
Strutsのメーリングリストでもはるか昔にでた話題だよ。
Wsxの作者は、あきらかに勉強不足で世間知らずだったね。

Tomcatは同じセッションでも、getSession()で、
必ず同じインスタンスが返ってくるという保障はないのよ。
だからsyncronized(session)じゃうまくいかないのよ。
>>254
それって微々たる量だけどメモリリークしない?
256デフォルトの名無しさん:02/11/28 14:30
>>254
それよか、同一ユーザーのスレッド間で
sessionの不整合が起きるかどうかのほうが心配。
String#intern() に同期かけるのがどこの業界で常識だって? >>254
258デフォルトの名無しさん:02/11/28 17:17
>>257
sessionidのinternに、という所が常識なんだろな。
普通にString#intern()使いまくったらいかんだろ。
>>258
>>257

sessionId.intern() に synchronized なんて常識どころかめちゃくちゃ
Tomcat ローカルなネタだろ。クラスタ対応の AP サーバ上でそんなバカな
真似してねーよな?

というつっこみ。
そもそもWsxは、WebSphere上でしか動かす気がないのだから、
sessionId.intern() はどういうつもりなんだろうか?
>>260
ここを読んでわけもわからずやってみただけ
262sage:02/11/28 18:39
>>260
例えばフレーム2分割の画面があって、
上は直接JSP、下は.doみたいな場合で
上がセッションから参照のみを行う場合に
sessionシンクロナイズドするよりidのinternのが
多少処理が早かったりするから、みたいな。
263デフォルトの名無しさん:02/11/28 19:41
Strutsはじめたての者です。一つ質問です。

<html:form action="/path/to/2ch">
このようなフォームタグを使い、struts-configのマッピング定義に
action属性と同じパスか設定されていれば、実際のページでは
<form action="/path/to/2ch.do">
と変換されますよね。

<a href="/path/to/2ch">2chだよ</a>
をマッピング定義したActionに送ろうとする場合は、
<a href="/path/to/2ch.do">2chだよ</a>
と、自分で「.do」拡張子をつけるものなのでしょうか?
<html:link>タグを使っても、<html:action>タグとは
違って変換してくれませんよね。

宜しくお願いします。
264デフォルトの名無しさん:02/11/28 19:45
ここに激しく勘違いなアドバイス書いておくと作者がぱくって悲惨な目に会うということか。
>>263
<html:link>だとforward属性でstruts-config.xmlの<global-forward>を参照できる。

どうしてもアクションパスを使いたい場合は、org.apache.struts.taglib.html.FormTag
から継承したタグを自作して、getActionMappingURL()使えばいい。

1.0.2ではそれしかない。1.1系は知らん。
どのみち synchronized(session) も synchronized(sessionId.intern()) も
クラスタ環境で本来の目的を果たすわけがない。で、WebSphere 専用の Wsx は
それをやってるわけ? なんか WACs やサーブレットワークス以下っぽいな…
Cluster環境だと、普通はFront EndのWeb Serverなどが、
リクエストのCookieを見て、同じSessionを同じAppServerに
割りふる機能があると思うのだが。
>>266
Wsxは、単なる使えないラッパークラスが数個入っているだけ。
びっくりするくらい、内容がない。

WACsやサーブレットワークスのような、ラッパークラスの質より量で
勝負するようなものとは、比較のしようがない。
>>267
割り振る機能があるのも知ってるし、ロードバランサーがクライアント IP に対して
固定で振り分け出来るのも知ってる。でも Wsx を使うときは必ずそれでヤレと言う
のは無理な話ではなかろうか。企業システムの環境設計/構築で開発者の決定権なんて
あまりないし、そもそも「フレームワークが対応していないから○○な構成は組めま
せん」なんて企業側への説明理由になるわけがない。そこらへんどう考えてんのよ? >>サクーシャ

んでも話通じる人がいてやっぱ 2ch は良いなぁとつくづく思う。WACs ネタとか。
>>269
逆なのでは?
クラスタ環境で使うとかなんとかが決まった上で、フレームワークが対応してるので使います、と。
なんでもかんでも同じフレームワーク使いますって態度じゃないと思うのだがどうだろう。

ただ、問題がわかってんならパッチ作ればいいことな気がするな。
271デフォルトの名無しさん
Wsxのpdf、誤植多すぎない?
サンプル画像も荒くて読めない!