《Struts》
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
NGNGStruts
http://jakarta.apache.org/struts/
Ja-Jakarta
http://www.ingrid.org/jajakarta/struts/
0002デフォルトの名無しさん
NGNG0003デフォルトの名無しさん
NGNG0004デフォルトの名無しさん
NGNG0005デフォルトの名無しさん
NGNG《The Jakarta Project》
http://pc.2ch.net/test/read.cgi/tech/1019996589/
0006デフォルトの名無しさん
NGNGServlet/JSP のフレームワークを語るスレ
http://pc.2ch.net/test/read.cgi/tech/1001950590/l50
0007デフォルトの名無しさん
NGNG0008デフォルトの名無しさん
NGNG0009デフォルトの名無しさん
NGNG0010デフォルトの名無しさん
NGNG0011デフォルトの名無しさん
NGNG0012デフォルトの名無しさん
NGNG0013デフォルトの名無しさん
NGNG0014デフォルトの名無しさん
NGNG0015デフォルトの名無しさん
NGNGただのサーブレットラッパー。
何が MVC やねん。そんなん MVC とは言わんわ、ボケ。
0016デフォルトの名無しさん
NGNG0017デフォルトの名無しさん
NGNG便利なんだろうけど、よくできた説明書がないから、
自分で作った方が(精神的に)楽だったりする。
0018デフォルトの名無しさん
NGNG>>ただのサーブレットラッパー。
Strutsが提示しているこのモデルよりも素晴らしい、
皆様が作成・利用されている
Webアプリケーションフレームワークアーキテクチャについて、
このスレにおわす皆様の賢察を拝見したく存じます。
差し支えない範囲でかまいませんので、よろしくお願いします。
0019デフォルトの名無しさん
NGNG0020デフォルトの名無しさん
NGNG使ってるよ。カスタムタグ作るの面倒で、ちょうど手ごろだったから。
理由はそれくらいだよ。中身はかなりクソだと思ってる。
特にBeanUtilsあたりのstaticメソッド呼びまくりは最悪だと思う。
まぁ、全体的に設計のレベルがそんな程度だしね。
既にあるものを最大限使うって考えれば悪くはないかな?
0021デフォルトの名無しさん
NGNGそういう話題なら >>6 を 100 回読み直せ。
0022デフォルトの名無しさん
NGNG002318
NGNGWebアプリケーションソフトウェアフレームワークに関する
アーキテクチャのオルタナティブって提示されているようには
読みきれなかったんですが……。
100回読んでないからダメなのか。
私自身は>>20と同じような、「ちょうど手ごろ」という観点で
Strutsは使わせてもらってます。
「全体的に設計のレベル」が上がると、
どのようなアーキテクチャが考えられるのか、
(Servlet + JSP といった、BluePrintsに言うところのWeb層までのレイヤ)
自分としてはStruts以上のものを考えられていません。
なので、クソじゃないWebアプリケーションフレームワークの
有りようについて、興味があって書き込んでました。
0024デフォルトの名無しさん
NGNGWebSphereやJBossみたいなアプリケーションサーバ
とは一緒に使えるものなの?
どうもフレームワークというやつはアプリケーション
サーバで提供されている機能みたいな気がするんだけど。
(月末締めの納品物件やっと作り終わったので寝れる。)
0025デフォルトの名無しさん
NGNGGUIで設定するツールがあったはず。詳細は知らん。
>> 20
カスタムタグってStrutsではビュー関連しか同梱されてなかったけど、
Apatchの別プロジェクトでビジネスロジック周りのタグリブもあったよね。
みなさん。タグリブどの程度使ってますかー?
0026デフォルトの名無しさん
NGNGアプリケーションサーバには依存しないで使えるよ。
なにはともあれ、深夜までお疲れ様でした。
002720
NGNGStrutsの概念的な設計はそんなに悪くないと思うよ。
というか、昔から長い間使われてきた手法だし。
設計がクソってのは実装に関する設計って意味ね。
今は結局StrutsをカスタムタグとURLのマッピングだけに利用して、
それ以降のビジネスロジックに対するイベント通知を制御するような
フレームワークを自作して使ってます。
オマケ機能としてEJBに似たトランザクション管理、入力値のチェック、
ログ管理、メッセージをDBで管理、SQLをXMLに記述してソースから
追い出すといった機能も付けたけど(笑
0028デフォルトの名無しさん
NGNGSQL を XML でって、俺も昔やろうと思ったんだが...
シングルクォートのエスケープがウザすぎて使い物にならないと思うが。
002918
NGNGStrutsのアーキテクチャ(所謂MVCmodel2)がそれほど悪くない、という点ではagreeです。
また、「実装に関する設計」がクソ、という点についてもagreeです。
プレゼンテーションや画面遷移、入力フォームの
コントロールWeb層までのベース(まさにフレームワーク)としては
大いに利用させてもらってます。
28にもありますが、SQLをXMLでハンドルするって、
難しいなあ、と感じているのですが、解決のコツとか、気をつけるところってあります?
トランザクション管理は、いまはJDBCのwrapperみたいな感じで対応しているのですが、
EJBライクな方法のほうが良いんでしょうか。
EJBは勉強不足なので、ちょっと調べてみようと思います。
0030デフォルトの名無しさん
NGNG最初見たときは JDBC 以下のクソインターフェースだと思ったが。
0031デフォルトの名無しさん
NGNGお前の使ってる素晴らしいインターフェースを教えれ
003220
NGNGSQLのサポートはいろいろ考えたんだけど、かなりシンプルな姿に落ち着きました。
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もどきをしてます。
0033デフォルトの名無しさん
NGNGやっぱ WHERE 句って↓みたいに書くわけ?
〜 WHERE FLAG = '0' AND AMOUNT > 100 AND HISTORY < 10
003433
NGNG〜 WHERE FLAG = '0' AND AMOUNT > 100 AND HISTORY < 10
0036デフォルトの名無しさん
NGNG実行の度にXMLを呼ぶようなつくりですか?
重くないかなと考えますが。
0037デフォルトの名無しさん
NGNG一回だけXML読み込んで対応するクラスに突っ込み、そのクラスを使いまわすとか、
Singletonで構成して読み込むのを一回だけにするとか、
そこらへんは何とでもできるのでは?
0038デフォルトの名無しさん
NGNG|⌒彡
|冫、) / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
|` / < Struts?
| / \_________________
|/
|
|
| サッ
|)彡
|
|
|
0039デフォルトの名無しさん
NGNGJoinとかも扱えるの? Viewを定義して逃げるとか?
自前でXMLを書くのがめんどくさかったので、DBのスキーマ読み込んで、
Beanと基本的なSQL発行するクラスを自動生成する仕組みを作ってみた。
まだ実用はしてないけど。
ところでJTSのフリー実装ってどこにあるのでしょう。くれくれで申し訳ないですが。
004020
NGNGシングルクォートはエスケープする必要ないのでは?
〜 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は使わない方がいいです。マルチスレッドの時にコミットがコケます。
004139
NGNG情報ありがとうございます。今度触ってみよう>Tyrex
from句をXML上にべたで書いてたんですね。見逃してた・・・^^;
0042デフォルトの名無しさん
NGNGこういうのあったんですね。>Tyrex
今度いじってみます。
ObjectWebのプロダクトとかぶってる部分も多いけど、
あっちと比べて性能的にはどうだろう・・?
0043デフォルトの名無しさん
NGNGStrutsで、ActionClass以外の場所からDataSourceにアクセスするには
どのようにしたらいいんでしょうか?
Strutsのドキュメントに「ActionClassにBizLogicを書くな」といわれ
ActionClassからDB接続部を切り離したいのですが、切り離すと空の
DataSourceがかえってきてしまいます。。
識者の方々、どうかご助力を・・・
0044デフォルトの名無しさん
NGNG0045デフォルトの名無しさん
NGNGそんなにClassForNameがイヤなのか?
0046デフォルトの名無しさん
NGNGDataSourceへの参照を持つ、ビジネスオブジェクトに対するwrappe
のようなrコンテキストオブジェクトを、Actionからの呼び出し先に渡す、
みたいなやり方はどうでしょう?
0047デフォルトの名無しさん
NGNG0048デフォルトの名無しさん
NGNGStrutsの次のバージョンからDBCPとかいうのに変わるらしいYO
0049デフォルトの名無しさん
NGNG0050デフォルトの名無しさん
NGNG0051デフォルトの名無しさん
NGNG005248
NGNGいや、TyrexがDBCPに変わるという話をしたんだが・・・
0053デフォルトの名無しさん
NGNG使ってるよ。インデックス付きプロパティとか扱うのめんどいから。
でも、ConvertUtilsが最悪だから、自作のと使い分けてる(笑
>>52
それってStrutsがTyrexをサポートするって事?
0054デフォルトの名無しさん
NGNG0055デフォルトの名無しさん
NGNGWhat's this?
0056デフォルトの名無しさん
NGNG↓のことでしょう。
ttp://java.sun.com/webservices/downloads/webservicespack.html
0057デフォルトの名無しさん
NGNG0058デフォルトの名無しさん
NGNGEJB2.0仕様でツールサポートがあればそこそこ使えるような気がしてるんですが
それともJDO待ちですか?
0059デフォルトの名無しさん
NGNGツールサポートって、JBuilderのEJBデザイナじゃだめなの?
簡単にEntityBeanとか、EJBを作れるんだけど...
006058
NGNGEnterprise版なんて高くて買う気しません(涙) IDEはeclipse使ってるし・・・
ところでJBuilder、2.0仕様対応したんですか?
昔試用版を使ったときは、1.0仕様に独自仕様追加して無理やり関連サポートしてて、
もの凄く嫌だった記憶があるです。
0061デフォルトの名無しさん
NGNG0062デフォルトの名無しさん
NGNGEclipseってどうですか?
006358
NGNGJavaのIDEとしては軽くて機能も十分です。詳細はeclipseスレ見てね
Struts用のアドインあるらしいですね。と無理矢理Strutsネタに戻してみる
JavaWorld見ながらStruts弄ってみたけど、リフレクション多用してるからかデバッグ時が面倒。
Formのパラメータ名とか間違ってたりすると、どこが悪いのかわかんなくなっちゃう。俺が慣れてないだけ?
0064デフォルトの名無しさん
NGNG個人的には業務開発で使用した話とか興味あるんだけど。
>>62
struts-consoleのプラグイン対応版が早く出てほしいね。
0065デフォルトの名無しさん
NGNG0066デフォルトの名無しさん
NGNGJBuilder6とJBuilder7では、EJB2.0に対応しているそうです。
「独自仕様」の部分は、言っている意味がわかりません。
2.0仕様が確定するまで1.xベースで補うべき部分は「各社」製品独自の
仕様になっていたと思います。
0067デフォルトの名無しさん
NGNGhttps://psc.borland.co.jp/training/servlet/MainServlet/Introduction?TRAINING_KIND_CODE=23
0068デフォルトの名無しさん
NGNGサーバーサイドJava初心者っす。業務で無理矢理やらされてまん。
Strutsタグでiterateってあるでしょ?
アレにindexed=trueって属性を加えると
画面上で変更した値を自動的にBeanに反映してくれるらしいんだけど
checkboxの場合、非チェック→チェック は上手く行くんだけど
チェック→非チェックは上手く行かないんです…。
誰か同様の現象が発生した人います?
0069デフォルトの名無しさん
NGNG外した情報自体はサーバにおくられへんから,状態が上書きされずに
残るってこと?
reset() で初期値設定するって対応をすればよいってはなし?
0070デフォルトの名無しさん
NGNGちょっと調べてみたら、チェックボックスの非チェックってサーバに送られないんすね。
reset()がどのタイミングで呼ばれるもんなのか、または自分でAction::perform()で呼び出すのか
ちょっと分からないんですが。
そもそも存在すら、このレス見るまで知らなかったし・・・。
初期状態でチェック状態のチェックボックスを非チェックにしてもBeanに反映されないんですよね?
てことはどれを非選択にしたかってどうやって特定するんですか?
007169
NGNGむー。
reset()がどのタイミングで呼ばれるかだけど、
ActionServlet#processPopulateメソッドの中。
リクエストパラメータをActionFormにコピーする前に
呼びにいってる。つまり,絶対処理されるし、開発者が自分で
呼び出すもんでもない。(呼んでもいいけど結果は…わかるでしょ)
つか,Strutsなんて単純な構造なんだから,
自分で調べたほうが早いよ。
後半の疑問だけど…
サーバに送られるのはそのリクエストごとのデータであって,
それは単にどれがチェックされているか,のデータでしかない。
つまり「前の状態がどうであったか」などというのは,そもそもそのまま
では知りようがない。
つまり,ユーザーロジックで状態をHttpSessionなりに保管しておいて,
それを比較するしかないっつーことなのれす。
# あーもちろんクライアントでのJavaScriptとhiddenフィールドを
# 組み合わせてハンドリングするってやりかたもあるでしょうけどね。
# まそのへんはお好みでやりなされ
007268
NGNGレス遅れてごめんちゃい。
ようやく言ってる意味が分かりました。アホですね、俺。
reset() → set〜() てな順番でメソッドが呼び出されるわけですね。
だからreset()で初期値を設定せよ、と。
色々すみませんでした。
0073デフォルトの名無しさん
NGNGstrutsの<html:select>タグ、又は<html:options>タグで
submit時に対応するFormBeanに選択値をセットしてくれるような属性ってあります?
あと、<html:select>タグのproperty属性って初期選択値の指定っていう意味でいいんですかね?
すんませんが誰か教えてケロ・・・・。
0074sa
NGNGどっかのClassで定義した定数とかを使いたいのですが、
どうすればいいのでしょうか?
例えば、
<html:radio name="test_radio"
property="test_id" value=<mytag:getConst key ="hoge">/>
こんな形のタグの中にタグって書けないんですか?
0075デフォルトの名無しさん
NGNGFormBeanのプロパティ名と<html:select>のpropertyを一致させればいい。
>>74
リファレンスで [RT Expr] が付いてる属性は、
value="<%=Integer.MAX_VALUE%>"みたいな使い方ができる。
0076デフォルトの名無しさん
NGNGレスありがとーございます。
マジで誰かの助言を待ちわびてました。
便乗してもう一つ質問させて頂きます。
上の質問の通りに、FormBeanのプロパティ名と<html:select>のpropertyを一致させる際、
option値が日本語文字列だと上手く行かなかったりします?
試してみた感じだと、option値が日本語の場合は挙動がオカシイっす。
プルダウンリストの項目を選択して、Submitしても再表示後には選択値が元に戻っちゃいます。
おっかしーなと思ってFormBeanのset〜()内でSubmitされる際に渡ってくる値を
トレースしてみたのだけれど文字が化け化け・・・。
画面上のプルダウンリストには正しく表示されてるのに変ですね。
ただoption値をアルファベットにしたら上手く動作しました。
原因知ってる人いたらおながいします。
007775
NGNG<option>の値で日本語の文字列渡してること自体が気持ち悪い。
他の<input>系のタグからは文字化けせずに値は取れてるの?
Servlet API 2.2系の実装だとエンコーディングの変換してくれないから、
(WebSphereだと勝手に変換されるみたいだが)ActionServlet.populate()
あたりをオーバーライドして自前で変換かけなきゃいけない。
0078デフォルトの名無しさん
NGNGi-modeとかいろんな端未に対応しなければならなくなりました。
どうやらXMLとxsltでやるのがよさそうですが、Strutsとそのへんって組み合わすことはできるのでしょうか?
0079デフォルトの名無しさん
NGNG最新のJavaWorldにXML(XSLT)によるStrutsの拡張ってのが載ってる。
叩き台としてはよいのでは?
原文記事およびサンプルソースは下から。
ttp://www.javaworld.com/javaworld/jw-02-2002/jw-0201-strutsxslt.html
008076
NGNGありがとーございます!あなたは神です。
Formクラスのset〜()内でエンコーディング変換処理をかませたら上手く行きました。
またよろしくおながいします。
0081デフォルトの名無しさん
NGNG貴重な情報ありがとうございます。
JavaWorld入手して調べてみます。
0082デフォルトの名無しさん
NGNGdata1,data2,data…と名付けられたデータ(任意の長さ)を保持/取得する
FormBeanのメソッドはどのように書くのでしょうか?
0083デフォルトの名無しさん
NGNG0084デフォルトの名無しさん
NGNGFormBeanにCollection型を返すget〜()メソッドを用意して、
jspで<iterate>タグを使ってCollectionの数分回して画面表示する。
そーゆー事ではない?外してたらゴメンなさい。
0085デフォルトの名無しさん
NGNGある画面のFormBeanについて、
別画面に遷移した時点でFormBeanの変数値をクリアしたいのです。
画面遷移後にまた最初の画面に戻るとFormに前回の値が残ってしまって大変です。
皆さんはどうしてますか?
0086デフォルトの名無しさん
NGNG<action>のデフォルトはscope="session"だよ。
必要がないならscope="request"を指定すればいい。
008785
NGNG即レスです。
scope="request"にしちゃうと、次のリクエストが発生する時に
オブジェクトが死ぬって事ですよね?
説明不足ですみません。
あるJSP内で複数回のリクエストを飛ばすんですが、
別のJSPに遷移した時点でFormを殺したいんです。
そんな事って出来ます?
0088デフォルトの名無しさん
NGNGもうちょっと状況を整理してサンプルコードも
差し支えない範囲で提供してくれたほうが答えやすいと思うのだが
0089デフォルトの名無しさん
NGNGActionBeanのexecuteでFormBeanのreset叩けないの?
009089
NGNGこういう話じゃないのかな?
※ちなみにstruts1.1
public ActionForward execute(...){
//確かここでFormBeanとってきて
//ここでなんかメインの実装して
formBean.reset(); //別に初期化系だったらなんでも良いけど
return mapping.findForward(...);
}
009185
NGNGなるほど。
ActionBeanから明示的にFormのreset()を呼んであげるのですね。
それなら全然問題なく動作しそうですよね。
>>88
すみませんでした。
今後はもう少し質問内容を考えて発言するようにしまーす。
0092デフォルトの名無しさん
NGNGStrutsの<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メソッドは呼ばれないヨ!とか
こーゆーコツがあるんだけど、ちゃんとやってっか?といった意見があったら宜しくお願いします。
0093デフォルトの名無しさん
NGNGあきらめてウムラウト買ってきなさい。
0094デフォルトの名無しさん
NGNGあれは単体で売ってないんじゃ。
ウルシステムズのコンサル込み企画でしょ。
0095Struts入門者
NGNGStrutsの開発ガイドみたいな本とかサイト、サンプルアプリケーション
(最低BluePrint程度の規模)って無いでしょうか。
かなり初心者チックな悩みなんですが、どんな属性をActionFormとして定義して、
どんな属性をActionFormではないBeansとして定義すべきか、なんてことに迷ってしまったりしてます。
ActionFormに定義する属性はやっぱりHTTPリクエストのパラメータ値だけなのかな。
0096デフォルトの名無しさん
NGNG本家Jakartaサイトを日本語翻訳しているJa-Jakarta Projectのページは参考になると思います。
JavaWorldの5月号やWEB+DB PRESSの9月号で特集が組まれてますので、
BackNumber等でご覧になったらいかがでしょう。
ActionFormの位置付けですけど 画面の入力項目や表示用データ等を
属性として持つ、てな感じでイメージしてるんですけど どうでしょう?
表示用データは大概Beanに持たせておいて、ActionFormでBeanのAccessorを
用意する・・・みたいな。間違ってたらすんまそん。
009795
NGNGStruts-ML見てたら解説本が出るようなので、それに期待します。
概要はわかるのですが、Taglibの細かい使い方など細かい話が知りたいので・・・
ActionFormはやっぱりそんな感じの切り分けになりますよね。
じしんなかったので。ありがとございます。
0098デフォルトの名無しさん
NGNGここなんてどうでしょう。
入門Struts -- http://www3.coara.or.jp/~agt/struts/
ActionFormは画面からの入力項目を容易に受け取るためのものです。
Taglibですが、ちょっとややこしいJavaScriptを使う際はかえって邪魔かも知れません。
私は画面遷移とActionFormの部分のみを用いていました(Validationも使ってなかった)。
0099100
NGNG0100デフォルトの名無しさん
NGNGshowMessage.jspのscopeがapplicationになっているのはどうしてでしょうか?
これをrequestに変更するにはどうすればよいのでしょうか?
0101デフォルトの名無しさん
NGNG気が付いたら100突破してる…。
0102デフォルトの名無しさん
NGNG掲示板を閲覧する人全員に参照できるようにです。
scopeをrequestにしても一度のセッションで破棄されるので意味がないと思われます。
ただこのままだとscopeがapplicationに格納されてるセッションオブジェクトが
肥大化してしまってリソースの無駄にもなるし、servletを終了するとデータが消えてしますので
DB等に格納する必要がありますね。
0103デフォルトの名無しさん
NGNGスレ立てから二ヶ月で 100 というはどうなんだろう。
0104デフォルトの名無しさん
NGNG色々な意味で すげ〜て感じ?
参考文献や役に立つサイトってあんまり無いから
Struts技術者って苦労してると思う。
このスレがそーゆー人達の駆け込み寺になってくれる事を祈りますよ。
0105デフォルトの名無しさん
NGNGレスありがとうございます。
ですが、私の質問の仕方が不適切だったようです。
おっしゃる通り、データの保存は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で疑問に思っても聞ける人がいないし
参考となる書籍も少ないし、なかなかつらいところがありますね。
このスレが発展し、後に続く人がより理解できる手助けになる
良スレになればいいと心から思います。
0106デフォルトの名無しさん
NGNGhttp://freeml.com/ctrl/html/MessageListForm/[email protected]
0107デフォルトの名無しさん
NGNGStrutsのtemplateタグを使用しているのですが、templateのinsert元で何らかの変数値をputした時
呼び出されたtemplate側では、その値を<template:get name="XXX"/>で取得する事が出来ますよね。
この値を<logic:iterate>や<logic:lessThan>タグ等で使用したいのですが、どうすれば良いのですか?
例えば、<logic:lessThan name="formName" property="count" value="XXX"/>のように
value属性に、呼び出し元からのパラメータを突っ込みたいのですが・・・。
すみませんが、宜しくお願いします。
0108デフォルトの名無しさん
NGNG<template:get>にその機能はない。
適当に継承してカスタムタグ作れ。
0109デフォルトの名無しさん
NGNGそれじゃあtemplateでjspを渡すぐらいしか役に立たないんですね。
レス有難うございました。時間を無駄にせずにすみました。
0110108
NGNGつーか、そんくらいのタグ作れよ・・・
<template:get>と<bean:define>を組み合わせるくらいじゃん。
defineの方を基本クラスにすると簡単にできそうな気がする。
0111デフォルトの名無しさん
NGNGタグの自作は前向きに考えますが、そもそも現状のtemplateってどんな使われ方が普通なんですか?
色々調べた感じだと、単にjspを呼び出してるだけのサンプルが多いですよね。
後は、文字列を渡してやるぐらいとか。
0112108
NGNG想定してる使い方はHTMLのフレームみたいにJSPの入れ子をするためじゃない?
実装はスタック使ってるから何段階でもいけるみたい。普通はしなさそうだけど。
>>110でタグ作れって書いたけど、実現方法は他にもあるよね。
putする側がrequestスコープに値を突っ込んでおけば参照できるし。
でも、pageスコープ間でのコピーを行うようなタグを作る意味はあると思うよ。
書く位置も<insert>の内側になるから、他と意味的な区別がつきやすくなる。
0113デフォルトの名無しさん
NGNGtaglibの実装ってどうやるのかと悩んだのですが、
ちょっと試しに作ってみる事にします。
それにしてもtaglibの実装に役立ちそうなサイトってあまり無いですネェ。
とりあえずはStrutsのtaglibソースを参考に実装しますが…。
色々な意見、ありがとうございました。
0114デフォルトの名無しさん
NGNGStruts1.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
0115デフォルトの名無しさん
NGNGJXPathって今日初めて知ったのですが、すっげぇ感動しました
データの辿り方を文字列でパラメタ化できるのが凄い。使いたい。
でもどう使うんだろう?使い道が思いつかん・・・・
0116デフォルトの名無しさん
NGNG0117デフォルトの名無しさん
NGNG0118デフォルトの名無しさん
NGNGw3c.org の XPath仕様のJava版でしょうか? (DOMのJava版JDOMみたいな関係を想像しますが)
XPathの場合、XMLタグの階層構造のパターンマッチング機構を提供しており、
仕様の最終目的は 「XML データベースの検索言語」(RDBのSQLみたいなもん)
です
0119デフォルトの名無しさん
NGNG結構内容が変わってる(追加された機能や1.0系から構成が変わった)し、
まだまだリリースまでは程遠いのかな?
0120デフォルトの名無しさん
NGNGhttp://easystruts.sourceforge.net/
012195=115
NGNG>>118
XPathのインタプリタらしいです。捜査する対象(Domなど)が抽象化されていて、
Dom以外のオブジェクトもXPath式で辿れるそうです。
ttp://www.terra-intl.com/jakarta/commons/jxpath/index.html
JavaBeansを辿る機能が使えるかなぁと思ったんですが・・・
0122デフォルトの名無しさん
NGNGこれ?
ttp://www.pearsoned.co.jp/washo/java/wa_java16-j.html
0123デフォルトの名無しさん
NGNG和本はオラ入を待つのが吉だと思われ。
0125デフォルトの名無しさん
NGNG0126デフォルトの名無しさん
NGNG待ちきれないなら、こっちを見みてるとか
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
とか。
まぁ、おら本も訳者次第では危ないらしいからねぇ・・・・・
0127デフォルトの名無しさん
NGNG0128デフォルトの名無しさん
NGNGsubmit時に対象Formに対して target="_top" と指定出来ますが、
この指定をaction::perform()メソッド内で設定する事は可能でしょうか?
0129デフォルトの名無しさん
NGNGformのtargetをperform()から動的に切り替えたいって意味?
そうなら、requestあたりにtargetの文字列突っ込んで、
<html:form target="<%=取得コード.toString()%>">
みたいな感じで出来るんじゃない?
0130128
NGNGレス、ありがとうございます。
実は各画面がframesetによる複数JSPから構成されてるんですよ。
で、framesetタグを定義してる親jspから各子供jspをframe定義してると。
その場合、親jspにはformが無いのでtargetの指定って出来ませんよね?
どうすれば良いんでしょうか?
フレームを使ってるとstruts-config.xmlもバシバシ肥大化してくし…かなり鬱です。
0131129
NGNG多分勘違いしてるんだろうけど、何がしたいのかよくわからん。
子フレームのformをsubmitした時に親フレームを上書きしたいの?
>フレームを使ってるとstruts-config.xmlもバシバシ肥大化してくし…かなり鬱です。
これは同意。template系のタグ使うと改善されるかもね。
0132128
NGNG素早いレスに感謝感激です。
子フレームのformをsubmitした時に親フレーム毎切り替えて
別の親・子フレームを表示したいんですよ。
で、submit時にAction::perform()でロジック判定して、
OKの場合、別の親・子フレームに遷移する。NGの場合はそのまま。
submit時にtarget指定しちゃうと無条件にframesetが壊れちゃうじゃないですか?
で、遷移先の親フレームのtargetをtop指定に出来ないかなぁと思いまして。
通常、こういう場合はどうすればいいんでしょう?
0133124
NGNG真っ当な方法では無理だと思われ。
素直にtemplateタグ使えば?
0134デフォルトの名無しさん
NGNG・・・真っ当な方法では無理ですか。
templateタグを使っての実現方法がよく見えてこないんですが
具体的にはどういった感じで実現すれば良いんでしょうか?
もし良かったら、簡単に教えて頂けますか?
0135129
NGNGその手の画面遷移はやっかいだよねぇ・・・
前にそんな遷移を作ったことあるけど、一箇所だけだったんで、
成功した時にはスクリプトだけのHTMLを返して、強制的に
フレームを更新するような作りにして逃げました。
templateは、<frameset>の使い方に似たJSPテンプレートに
ページ毎のJSPからパラメータ渡して<frame>に相当する
JSPをincludeさせてくって雰囲気。
こんな遷移が大量にある場合は検討するといいかも。
0136128
NGNGアドバイス、ありがとうございます。
親Frameのjspから、各小Frameのjspをtemplate:instertで
includeするって感じでしょうか?
これでうまく行くかどうかを検証したいので、
ちょっと、今日試してみようと思います。
有難うございました。
0137デフォルトの名無しさん
NGNG0138デフォルトの名無しさん
NGNG0139デフォルトの名無しさん
NGNGStrutsってあまり人気ないのかなぁ…。
0140デフォルトの名無しさん
NGNG0141デフォルトの名無しさん
NGNG0142デフォルトの名無しさん
NGNGイー便茶役員一覧
社長池上(テンプスタッフを追い出された、人材派遣業ヒューマンアイも経営し、私腹をこやしている)
菅原(住商情シスで仕事をしたと威張ってる、偽EVS Framework開発者として、JavaONEで演説予定)
山本(リクルートをDrop outして人材派遣業という、いわゆる使えない社員の王道、ヒューマン偽アイコンサルタント)
児玉(なんだかんだで、結局辞めた)
こんなやつらは、ゴミ以下のイーベンチャー ゴミサポート会社!!
(ついでにゴミSE巡回サービスもよろしく!!)
☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆
0143デフォルトの名無しさん
NGNG国内MLもうごいてるんだけどね。
最近は厨な質問ばっか。
0144デフォルトの名無しさん
NGNGでも、Strutsの場合情報源が少なすぎるからねぇ。
もう少し浸透してくれば、状況は変わるでしょう。
で、実際のところStrutsって流行ってるのかな?
最近は、雑誌等でも特集記事が組まれる事が多いけど
少なくとも俺の周りでStrutsを使ってる人間は居ない…。
このスレもさっぱり盛り上がらないところを見ると…
0145デフォルトの名無しさん
NGNGpureなStrutsっつーのは見かけにくいんでは?
0146デフォルトの名無しさん
NGNGそれはtaglib拡張とかって話?
0147143
NGNG会社が業務システムを構築するような規模のものの場合、
素のStrutsを使おうってのがそもそも無理でしょ。
>>20-40を見るとわかると思うけど、
他にも素で使おうとするには足りない部分が多すぎる。
ま、あくまでもベースとしてだけ使えってことなんだろうね。
0148デフォルトの名無しさん
NGNGActionFormクラスに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が正しく機能しません。
すみませんが、どなたかアドバイスを宜しくお願いします。
0149デフォルトの名無しさん
NGNGこのスレだったか、ML だったか。
答えは覚えてない。すまん。
0150デフォルトの名無しさん
NGNGttp://www-6.ibm.com/jp/software/websphere/seminar/20021001.html
0151デフォルトの名無しさん
NGNGおお〜!情報提供サンクス。行ってみたい。
でも、内容はどうなんでしょ?
技術的に突っ込んだ話が聞けるなら行きたいけど、
概要説明程度のセミナーならパスだなぁ。
0152デフォルトの名無しさん
NGNGえらくActionFormが肥大化してきました。
execute(perform)の中で次の画面に渡したい情報をActionForm
に書き戻してるんだけど、これって良くない設計?
(context.setAttributeを使うべきなのでしょうか・・・)
Struts情報は増えてきたけど設計に関する情報はまだ少ないので悩んでます。
0153デフォルトの名無しさん
NGNG0154デフォルトの名無しさん
NGNG複数画面にまたがった情報を保持できるActionFormなら
インスタンスをsessionに入れるようにしておけば
わざわざ埋めなおす必要なんてないんじゃないの?
0155デフォルトの名無しさん
NGNGスコープをsessionなりapplicationなりにすれば
リスエストの度に埋めなおす必要はないと思いますが・・・?
0156デフォルトの名無しさん
NGNG0157デフォルトの名無しさん
NGNGいってきたよ。
内容はStrutsの概要、設計ガイド、Struts Extension for WebSphere、Code Campでした。
一般的な話が多かったけど、Code Campは唯一の収穫になったかな。
Extension for Strutsは期待していたけど、実際はしょーもなかった。(どこがExtensionなんだよと思った人は多かっただろう..。)
いずれ、全部フリーでソースつきで公開するっていってたね。
0158156
NGNG>>157
確かに自分もCode Campが唯一の収穫だったんだけど、
あれってStruts Catalogの受け売りでしょ?
STXは・・・・ソースがいじってよくなりそうなら考えるって言う程度だね。
素のままでは使い気にはならない。
公開時期は10月中ごろっていってたような。
0159デフォルトの名無しさん
NGNGStruts Catalog って、これだよね。
ttp://husted.com/about/scaffolding/catalog.htm
Code Campでも話があったけど、
Link to Only Actions ってみんなちゃんと守ってる?
うちのプロジェクトは全然、そうなってないんだけど。
0160デフォルトの名無しさん
NGNGの方が読みやすいかも
0161156
NGNGいちおうそれはできてる。<Link to Only Action
そのかわり、うちのプロジェクトではActionクラス内で
複数(2〜6つ)のビジネスロジックをif文で条件分岐させてる。
画面にActionが対応して、
画面内のボタン/リンクにAction内の各ビジネスロジックが対応してって感じ。
ビジネスロジックの分岐以外はActionクラス内に記述していない。
Web固有のデータは全てビジネスロジックの中に持ち越し。
げふ。
0162名無しさん@Emacs
NGNG0163デフォルトの名無しさん
NGNGlogicのiterateってCollectionしか使えない?
HashMapでくるくる回したいんだけどさー。
どーやればよいのやら…
0164デフォルトの名無しさん
NGNG0165デフォルトの名無しさん
NGNGさんきーう。
っていうか、やっぱMapはkeyとvalueしか使えないのね。
valueに入れたBeanのプロパテを拾いたかったのだけど。
0166デフォルトの名無しさん
NGNG受けたい思って面接逝ったら、要るのは業務で経験したヤシだって。
良く話を聞いてみると、既に燃えているプロジェクトだった。
0167デフォルトの名無しさん
NGNGvalue.hogehoge じゃダメなの?
0168165
NGNGそゆこと?
ちょいまち。
を?でけた…。なるほどー。
目か鱗が落ちた。
さんきーう。
やっぱソース読まないとあかんねー。
0169デフォルトの名無しさん
NGNG0170デフォルトの名無しさん
NGNGhttp://www.ibm.com/news/jp/2002/10/10151.html
0171デフォルトの名無しさん
NGNGあと1週間か>STX公開
0172デフォルトの名無しさん
NGNG0173デフォルトの名無しさん
NGNGIBMの無料セミナー行った人なら内容は知っているが、
そんな大層なものではないぞよ
0174171
NGNGいや、自分もセミナー行った一人なんでそこら辺は・・・・(藁
ただ、あの機能をどんな素晴らしいコードで実現してるのか知りたいだけ。
ソース非公開・修正不許可だったらとてもつかえたもじゃない。
0175171
NGNGただいまダウソ中。
0177デフォルトの名無しさん
NGNG0178デフォルトの名無しさん
NGNG期待していたんだけど。
0179デフォルトの名無しさん
NGNG0180デフォルトの名無しさん
NGNG> 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を知らないのか?まったく意味なし。
あー、ダウンロードして損した。
ひさしぶりに笑わせてもらいました。
0181デフォルトの名無しさん
NGNG役に立ちそうもない Actionクラスの継承クラスをみると,
performメソッドでなくexecuteメソッドもあるからひょっとして、
と思ったが throws 句 をみて…
Declarative Exception Handlingが使えんじゃないか。
0182デフォルトの名無しさん
NGNG0183デフォルトの名無しさん
NGNGどういうつもりだったんだろ...。
新入社員への罰ゲーム かな?
0184デフォルトの名無しさん
NGNG俺もさっき一通り見て くすすっ と笑わせてもらったのでちょいと書かせてもらおう。
> 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ウィザード完備とかのフルサポートするとか。
0185デフォルトの名無しさん
NGNGおさえろ。
Extension for Struts には確かにがっかりさせられたがが、
同じところでダウンロードできたオークションのサンプルはなかなかよくできてたぞ。
(Ant, JUnit, log4j, Commons Logging, Commons Langと結構いろいろ使用していて頑張ってる)
Tomcatでも簡単に動いてくれたし(^^;)
Logのコンソール画面がいきなりでてきたのは、びっくりした。
log4jにこんな便利な機能があったんだ。
(Struts1.02ベースなのは残念だけど。)
0186171
NGNG・Pre/Post Invocation
・Session Management
あたりなんか、セミナーの機能説明聞きながら予想していたコードそのまんまだったからなぁ。
っていうか、ここらへんはみんな予想してたでしょ?>セミナー参加者
あと、個人的に一番ウケたのは
いくつかのソースコードで日本語がハードコーディングされてる点(WsxDataSource)
会社の名前出してって公開するソースがこれかよ、と。
>>185
こっちはよいね。STXがひどすぎたから一層そう思える。
セットで公開した割にはSTX使ってないし。純粋にサンプルソースとして見れる。
0187デフォルトの名無しさん
NGNGこんなのコミュニティは見向きもしねぇよ。
0188デフォルトの名無しさん
NGNG0189デフォルトの名無しさん
NGNGeclipseはいいんだけどね。IBM。
そもそもlog4jだってもともとはIBMがJakartaに寄贈したものだし。
アメリカIBMがすごいだけで、
しょせん日本法人はだめってことが、今回のことで再認識。
0190デフォルトの名無しさん
NGNGすいません。恥をしのんでお聞きします。
> あと、個人的に一番ウケたのは
> いくつかのソースコードで日本語がハードコーディングされてる点(WsxDataSource)
これってsetTransactionIsolationのところのことですか?
ログだから日本語をハードコーディングしても問題ないかな?とか思っちゃうんですが、
問題有りですか?
どこらへんがバカなのか教えてください。
日本語ってこと自体がだめんですか?
0191デフォルトの名無しさん
NGNGWin上でビルドしたSTXのwarファイルとかをLinuxで起動させるとよくわかるんじゃないかな。
0192デフォルトの名無しさん
NGNGそれは理由にならないぞ。classファイルになった時点で全部unicodeになるだろ?
0193デフォルトの名無しさん
NGNG>> Session Management
>sychronized(session) してるだけ。
>Tomcatだと、これがうまくいかないことを開発者は知らないと思われる。
こんなんでホントに巧くいくのか疑問だったんだけど、
WASなら巧くいくんですね……。
Tomcatで、WSXがやろうとしいていることを実現しようと思ったら
どうしたらいんでしょう? TOKENだけで実現可能なんでしょうか?
0194186
NGNG実はそこまで深く意識して書いたことではなかったのだけど、
一応自分として日本語をハードで書くのが嫌な理由をあげてみた。
1.ソースを記述したプラットフォームと異なるプラットフォームに持っていくときがめんどい。
→ EUCなソースをWinでコンパイルしようとしたり、その逆をやろうとすると、コンパイルでひっかかる文字がある。
まぁ、単に文字コードの変換を掛けたり、JavaソースをUnicodeで作成するのが面倒くさいだけなんだけど。
2.仮にコンパイルが通っても文字化けする。
→ >>192はそういうけど、実際Winで作成したJavaソースをLinuxやHPでコンパイルしたら化け化けになったが・・・・
ソースを最初からUnicodeででも作成してない限りこの問題ってなくならないと思っていたけど、そもそも根本的な勘違い?
3.自分用のツールや開発中のプロトタイプならともかく、
業務システムや、公に公開するようなものに日本語をべたがきするのはどうかと。
プロパティファイルをつかって国際化するか、1や2の問題が起こらないように素直に英語で記述すべきでしょ。
→ STX自体をβ以前と見ればこの点は問題ないのかも(藁
って感じでどうでしょ?
特に、1と2はJavaを初めて間もない頃にかかわったプロジェクトでえらい目に会ったことがあるので
個人的にトラウマになっているところもある(藁
他の人はここらへんに関してはどんな風に考えてるの?
0195デフォルトの名無しさん
NGNG>>2.仮にコンパイルが通っても文字化けする。
それはコンパイラが悪い。
ただ今回のSTXはApacheコミュニティに対してフィードバックするという話らしいので、
日本語使ってたら外人読めないジャンって感じ。
個人的にはJavaで日本語はじゃんじゃん使おうって感じなんだけど(そもそも俺日本人だし)。
アーキテクチャ上問題ないし。
0196デフォルトの名無しさん
NGNG> ただ今回のSTXはApacheコミュニティに対してフィードバックするという話らしいので、
(´,_ゝ`),プッ
いったいどこをフィードバックするつもりだろうか?
これをフィードバックしていたら、世界中のStrutsユーザーがフィードバックしなければいけなくなるぞ。
0197デフォルトの名無しさん
NGNGjavac -encoding
0198デフォルトの名無しさん
NGNGExtension といいつつ、何も拡張していないからね。
そりゃーここだけでなくいろんなところで叩かれるわ。
"Strutsの間違った使用例集" - よい子はまねをしてはいけません。 -
だったら、きっと受け入れられたと思う。
0199194
NGNG昔のプロジェクトの時はHPのJDK1.1.8&OracleAP鯖の昔のバージョン(8iとかよりずっと前)だった。
単に>>197の言うオプションを指定すればすんだような気がする......
>>197
JDKのドキュメントみて確認。
今度からちゃんと覚えておきます。
>>198
公開前宣伝がおおきすぎたのもあるような。
0200デフォルトの名無しさん
NGNG結局encodingオプションを知らなかったってこと?まじ?
笑える。あほか、こいつ。
0201デフォルトの名無しさん
NGNGIBM社員ハケーン
0202デフォルトの名無しさん
NGNGオークションのサンプルをTomcatで動かしてみたのですが、
あのLogの画面(LogFactor)ってどうやって出しているの?
ソース見たけどわからないよー。
めっちゃ気にいったので自分のプロジェクトでも使いたいのですが、
誰かやり方しりません?
0203デフォルトの名無しさん
NGNGlog4j.propertiesにエントリされているorg.apache.log4j.lf5.LF5Appender
っていうのがそれじゃない?
0204デフォルトの名無しさん
NGNG試したところ、うまくいきました。ありがとう!
(もっと、複雑なことをしなきゃいけないと思ってたよ。..)
いいね、これ。
JDK1.4のLoggerではなく、log4jでしばらくいくことにします。
0205デフォルトの名無しさん
NGNGオークションのサンプルのソースみてみたら、
ビジネスロジックをInterfaceとして定義してActionクラスからFactory経由でよんでいるけれど、
そこまで徹底的にしたほうがいいのか?(そこまでの勇気はないぞ..。普通。)
ビジネスロジックの切り離しって、こういうパターンで行うのが流行なの?
Struts本家のサイトにもこういう情報がないので、
ほかに、Strutsを使ったサンプルのソースがあるところがあったらキボーン。
0206デフォルトの名無しさん
NGNG漏れそのソース見てないけど、書いてある話だけだとそんなにおかしくはないんじゃない?
J2EEパタソに則ってるのではなかろーか?
そのあたりだと、SessionFacadeとかValueObjectとかCommandとかのパタソを使うとよさげ。
>Struts本家のサイトにもこういう情報がないので、
>ほかに、Strutsを使ったサンプルのソースがあるところがあったらキボーン。
確かにちゃんとしたstrutsのソースって少ないよねぇ。今まで見てきたサンプルってActionにロジックとか
イパーイ書いてあるのしかみたことない。
漏れもみてみようかなぁ…。例のソース。
0207デフォルトの名無しさん
NGNG0208デフォルトの名無しさん
NGNGとりあえず、辞書ひけ。
0209デフォルトの名無しさん
NGNGオークションのソースってどこからダウンロードできるの?
おしえてちょうだいませ。
0210デフォルトの名無しさん
NGNGとりあえず、最初から読め。
0211デフォルトの名無しさん
NGNG0212Delフサギコ ◆A6VzDeLphI
NGNG>
> 同社によれば、新しい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サポする日も近いのかな。
0213デフォルトの名無しさん
NGNGいまだにこれ使えばどんな開発でもコスト削減できるなんて考えてるのか?
これでコスト削減できるのは掲示板程度の開発だろ。
0214デフォルトの名無しさん
NGNGイントラでは厳しいよね。
0215デフォルトの名無しさん
NGNG0216デフォルトの名無しさん
NGNGだろうね。
イントラ要件でよく挙げられるエラーがあったらそこのフィールドの背景を赤くするだとか,
ログインユーザによって同じ項目でもdisable属性にするとかが,
そういうことが(相当回りくどいことしないと)できない。
あとこれは俺が悪いのかもしれないけど、<logic:iterate>の中で
<html:text>ってうまく使えなくない? value値がString[]を直接toString()した
値になっちゃう
0217デフォルトの名無しさん
NGNGStrutsを使えば画面遷移の制御やフォームデータのI/Oなんかは
つくりこまなくてもいいんだから、その分の工数を
エラーフィールドの背景を赤くするカスタムタグつくるのに割けば
いいんじゃないかと思うのだが。
0218デフォルトの名無しさん
NGNGstruts-config.xml をプラグインから読み込んで、global-forwards や action や message-resources や form-beans を追加するとかできると、使えそうだと思ってるんですけど。
0219デフォルトの名無しさん
NGNGその仕組みのための制約が、規模がでかくなると利いてくるのだよ。大抵最後の方で
「こんなんだったら最初から自分たちで作った方が良かったな」という結論に至る。
別に Struts だけでなく ServletWorks や WACs や INTERSTAGE などの糞も同じ。
結局「汎用化するために業務に踏み込んだ実装をしていない」「業務に踏み込んで
いないフレームワークなど工数削減にたいした効果がない」という事にようやく
世間が気づき始めた (業務が絡んだ基盤の実装はかなり大きく、どうせそれを
1から作らなきゃいけないなら同じという意味)。どれもサーブレットラッパー
作って「フレームワークだ」とか寝ぼけたこと抜かしてるだけ。
0220デフォルトの名無しさん
NGNG禿動
業務で使おうと思ったらStrutsなりServletWorksなりをさらにラップして
やらなければ使い物にならないからね。だったらServletをラップする方が
知識的にも実作業的にも遥かに楽な罠。
素人が慣れないServlet&Javaでフレームワークなんて作らなくても良い
から素直にMQやCICSラッパーでも作っててくれって思った。
0221デフォルトの名無しさん
NGNGStruts1.1b2をみてると、SunのBluePrintsの素直な実装のように思ってるんですが、
Strutsによって「制約」を受けた「こんなん」じゃないものって、
どういった設計で画面制御やフォームのI/Oを克服できるんでしょうか?
Strutsごときで工数なんて減らせるか!という意見については同意です。
ただ、「業務実装の土台の土台」としてStrutsは使えるんじゃないかなと
素朴に思っているので、考えを知りたいと思ってます。
0222デフォルトの名無しさん
NGNG219ではないが、BluePrintsはSUNと同じくヘタレ。実務をあれでは無理だと思う。
土台の土台と言うけれど、あの実装のどこが使えるかわからん。
イントラなどであの単純なMVCが向いているか疑問。
戻るの制御や、Modal的制御をやろうとするだけでも大変だと思うが...。
0223デフォルトの名無しさん
NGNGDuplicate Submissionは確かに問題。
しかし、だからといってServlet Wrapperを丸ごとつくるのは
車輪の再発明では? NIH症候群では。
0224デフォルトの名無しさん
NGNG一応StrutsにはModal制御的な仕組みはついてる罠。
ActionクラスのsaveTokenとか。
>>221
漏れも土台の土台には禿同。
Struts使ってイントラ業務作ったけど、結局
ActionServlet、Action、Errorとかだいぶ拡張してまった。
Strutsで工数削減は、まあ要件しだいかな。
下忍PGがアプリ発散させちゃうことを考えたら
Strutsなりなんなりを使った方が良いことも多い、と思う。
0225デフォルトの名無しさん
NGNGsaveTokenは知ってるよ。
でもそれでは足りないから困っているんだよ。
0226デフォルトの名無しさん
NGNG上の方でもでていたと思うけど、連続submitについては
TOKENだけだと足りないように思う。
結局JavaScriptで画面制御しちゃったりするんだけど、
これはお寒い対応だと思っている。
どーすればいいのだろう……。
0227デフォルトの名無しさん
NGNGIBMの出したExtenstionForStrutsはどう?
saveTokenとsessionロック使ってる風。
>>226
ボタン連打されたら無理だな。
そこはJavaScriptで耐える罠。
0228デフォルトの名無しさん
NGNGカスです。なんの参考にもなりません。
0229デフォルトの名無しさん
NGNG>ExtenstionForStruts
たんなるうんこ。
DQN社員しかいない日本IBMの作ったもんだから無視したほうがいい。
日本IBMうんこフレームワーク一覧
WACs
FormWave
ExtenstionForStruts
これらを使えといわれたら氏を覚悟したほうがいい。
0230デフォルトの名無しさん
NGNG「ここで発明されたものではないので、大したものではない」
という一般的考え方であり、自らの発明や創造だけに価値を
置き、他から新技術やアイデア、手法を導入することを回避
する傾向
0231デフォルトの名無しさん
NGNG予算内で実際使えるものがあれば、どんどん使って楽したいけどね。
コンテナを一から作るのは対価に見合わないけど、
Strutsなら微妙なとこだな...。
0232デフォルトの名無しさん
NGNGずっと以前から思ってたけど、既存フレームワークをこき下ろすのが
はやってるのかそれともけなすことで作成者より自分が偉くなった気に
なりたい奴が多いのか良く分からんな。
完璧なフレームワークなんてないがそれでもそいつが一番効率よく使えるように
使うのが仕事だろ。自分が満足できるのが欲しければ、自分で作ればいいだけだしな。
0233デフォルトの名無しさん
NGNG仰る通りだが、それでも、
大々的に(?)発表したExtenstionForStrutsは
大したことないと思う。
だからStrutsについては手前エんとこで拡張するけどね。
WACsは評価したことないので知らない。
0234デフォルトの名無しさん
NGNGServletWorks も入れといてくれ。
0235デフォルトの名無しさん
NGNG効率が良くなると言われてフレームワーク入れるんだろ。この発想は目的のための
手段だが、君の最後の 2 行は手段が目的になってる。
0236232
NGNGNo。
「こんな糞フレームワーク使ってられん。作ったやつはDQN」
「こんなの使うなら死ぬ」
なんて書くやつが妙に多いよな,という風に(俺は)思ったと。
つまりそれって少なくとも「自分で使う場合は開発効率を下げる(または役立たず)」と
その面々は主張してるわけだろ。
だったら解決策としては
・自分が納得のいくベターな(開発効率が良くなる)既存フレームワークを探してそれを使う
か
・自分が納得のいくベターな(開発効率が良くなる)フレームワークをゼロから作る,もしくは
(それこそStrutsとかのをベースに)自分で作りこむ
の2択でしょ,という意味のことを書いている。
それは,手段が目的になっているとは言わない。
(もちろん,そんなの使わず単に無視して,何も使わずにガリガリ書くやりかたがプロジェクトとして
もっとも開発上効率が良いというなら,その第3の選択肢を採用すればいいだけの話だ)
最初の疑問として俺が理解できないと書いたのは
・単に自分が満足できない (俺様の欲しいものはこんなんじゃねえ)
・俺センス的にそのフレームワークのデザインは認められねえ
というだけでひたすら否定するだけで
黙って無視(使わない),ないなら(しょうがないけど)作るという
風にはならないのはなぜなのかということ。
書きながら思いついた理由はは
「自分で作れない(作らない)けど使うと楽な面は確かにあるから
使う。けどやっぱり使っててストレスと鬱憤たまってしょうがねえー!」という
歪んだ思いの発露なのか?と思ったりもしたが,やっぱり違うか(w
0237デフォルトの名無しさん
NGNGちょっと誤解してたな。「フレームワークが糞でもそれを使って楽する方法をてめぇで
ヒネリ出せやヴォケ」と主張してるのかと思った。
ただ、糞だが政治的な理由で自分たちで作りなおすことができない連中がここに溜まっ
てるわけでして (特に lβM 系が多いのはそれが理由といえる)。
0238デフォルトの名無しさん
NGNGそこで話が元に戻って,その「糞」ってのは
どういう意味で皆糞なんだっていってんの?って思ったんよ。
「デザイン的あるいはコード的に美しいことは一般的に正しい」
これは真だと俺は思ってる。けど,
「デザイン的あるいはコード的に美しいことが常に正しい」,
あるいは「正しければデザイン的にあるいはコード的にも美しい」,
は真じゃないでしょ。
いみじくもあなたが言ったように,
「効率が良くなると言われてフレームワーク入れる」んでしょ。
だったら極端な話,デザイン的に多少ヘボでも生産性が上がる,
開発効率が上がる,型にはめることで保守性まで確保できる,といった
メリットがデメリットを上回るんなら,俺はそれも1つの方策だと思ったりするね。
んで,その非難対象のフレームワークはどういう観点で糞なんだって
ことよ。本当に「効率がそれを採用するよりむしろ悪くなる」
ほどのフレームワークなら,いくらなんでも採用しないんじゃないのと思ってね。
# そこまで政治的な縛りってのはあんまり考えにくい(誰か反対するだろ)。
# あ,もちろん個人的にそっちよりこっちが使いやすいって話はいくらもあるだろうけど,
# プロジェクト的に判断してのレベルでね。1システムの開発担当会社が
# 複数の場合も考えて。
まー長文ですまんかったが,言いたかったのはそういうこと。
もちろん,開発効率なんてしらぬわ!つくり的にヘボならそれは価値なし!
というスタンスはありだし,雑談の話とか個人的には共感さえするyo
0239デフォルトの名無しさん
NGNGとりあえず、WACs, Extension for Struts は糞 であることはソース見ればわかるが明白だろ?
もうそろそろ、Struts本来の話題に戻そうぜ。
struts-tiles はみんな使ってる?
0240デフォルトの名無しさん
NGNG1.0.2でも使えるみたいだけど、途中から導入するのは面倒そうなので
まだ使ってません。
1.1b2(1.1はいつ?)で始められるプロジェクトがあれば
是非とも使ってみたい。
Tilesと関係ないけど
JavaWorldに面白そうな記事が載ってました:
http://www.javaworld.com/javaworld/jw-05-2002/jw-0510-struts.html
0241デフォルトの名無しさん
NGNGhttp://www-6.ibm.com/jp/software/websphere/developer/download/wasstx.html
なんかロジックを修正しているらしい。
とりあえずダウソしてソースを読んでみます。
0242デフォルトの名無しさん
NGNGどうしようもなく馬鹿っぽい
0243デフォルトの名無しさん
NGNGExtension for Struts、あいかわらずの糞っぷり。
もう公開するのやめればいいのに..。
というか、作者、あきらかにここのスレッドみてると思われる。
WsxHookableAction.java を消してみたり、sychronized(session) やめてみたり、
あきらかにここでいわれていることをぱくっているだけ。
変更点は、ソースから作者の名前を消したことくらいです。
ププ。
0244デフォルトの名無しさん
NGNG君は サクーシャ 派閥と反対側に居る人でつね?
0245デフォルトの名無しさん
NGNGそれは俺も思った口だ。 作者はこのスレ見てるだろ。
作者派閥なあ…そんなのがあるのかどうかしらんが
あんなのを社名使って大々的に出せるのはブランドにいるからこそなのは
間違いない
0246デフォルトの名無しさん
NGNGブランドってなに?
0247デフォルトの名無しさん
NGNGあそこの社内用語みたいなもんよたしか。現場系の部門でなく製品担当・営業推進を
受け持つ部門の総称だな
0248デフォルトの名無しさん
NGNG0249デフォルトの名無しさん
NGNGhttp://www.oreilly.com/catalog/jakarta/
感想希望。マニュアルより詳しい?
0250デフォルトの名無しさん
NGNG挙げている書籍は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
このスレの住人のコメントを希望
0251デフォルトの名無しさん
NGNGしているわけだが、こいつら両方ともちゃんとしたテストしてないだろ!
なんでこんなにバグや甘い仕様がいっぱいあるんだよ!
0252デフォルトの名無しさん
NGNGちとやられた感があるのだが。
つーか、ガイシュツのTomcatだとsynchronized(session)
できないってのは、結局どういう理由だったの?
まさかリクエストごとにセッションのクローン作っている
わけでもあるまい。
0253デフォルトの名無しさん
NGNGスレ違いです:
「Servlet/JSPのフレームワークを語るスレ」
http://pc3.2ch.net/test/read.cgi/tech/1001950590/
↑こっちへどーぞ
>>252
恥ずかしながらinternを使っているソースを初めてみました。
これならどんなサーブレットコンテナでも大丈夫そうなので、
自分のところでもいただいてしまおうと思います。
Tomcatではなんでダメなのかは私も知りたい……。
0254デフォルトの名無しさん
NGNGsessionId,intern()
は、一年ほど前から常識だよ。
Strutsのメーリングリストでもはるか昔にでた話題だよ。
Wsxの作者は、あきらかに勉強不足で世間知らずだったね。
Tomcatは同じセッションでも、getSession()で、
必ず同じインスタンスが返ってくるという保障はないのよ。
だからsyncronized(session)じゃうまくいかないのよ。
0255デフォルトの名無しさん
NGNGそれって微々たる量だけどメモリリークしない?
0256デフォルトの名無しさん
NGNGそれよか、同一ユーザーのスレッド間で
sessionの不整合が起きるかどうかのほうが心配。
0257デフォルトの名無しさん
NGNG0258デフォルトの名無しさん
NGNGsessionidのinternに、という所が常識なんだろな。
普通にString#intern()使いまくったらいかんだろ。
0259デフォルトの名無しさん
NGNG>>257 は
sessionId.intern() に synchronized なんて常識どころかめちゃくちゃ
Tomcat ローカルなネタだろ。クラスタ対応の AP サーバ上でそんなバカな
真似してねーよな?
というつっこみ。
0260デフォルトの名無しさん
NGNGsessionId.intern() はどういうつもりなんだろうか?
0261デフォルトの名無しさん
NGNGここを読んでわけもわからずやってみただけ
0262sage
NGNG例えばフレーム2分割の画面があって、
上は直接JSP、下は.doみたいな場合で
上がセッションから参照のみを行う場合に
sessionシンクロナイズドするよりidのinternのが
多少処理が早かったりするから、みたいな。
0263デフォルトの名無しさん
NGNG<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>タグとは
違って変換してくれませんよね。
宜しくお願いします。
0264デフォルトの名無しさん
NGNG0265デフォルトの名無しさん
NGNG<html:link>だとforward属性でstruts-config.xmlの<global-forward>を参照できる。
どうしてもアクションパスを使いたい場合は、org.apache.struts.taglib.html.FormTag
から継承したタグを自作して、getActionMappingURL()使えばいい。
1.0.2ではそれしかない。1.1系は知らん。
0266デフォルトの名無しさん
NGNGクラスタ環境で本来の目的を果たすわけがない。で、WebSphere 専用の Wsx は
それをやってるわけ? なんか WACs やサーブレットワークス以下っぽいな…
0267デフォルトの名無しさん
NGNGリクエストのCookieを見て、同じSessionを同じAppServerに
割りふる機能があると思うのだが。
0268デフォルトの名無しさん
NGNGWsxは、単なる使えないラッパークラスが数個入っているだけ。
びっくりするくらい、内容がない。
WACsやサーブレットワークスのような、ラッパークラスの質より量で
勝負するようなものとは、比較のしようがない。
0269デフォルトの名無しさん
NGNG割り振る機能があるのも知ってるし、ロードバランサーがクライアント IP に対して
固定で振り分け出来るのも知ってる。でも Wsx を使うときは必ずそれでヤレと言う
のは無理な話ではなかろうか。企業システムの環境設計/構築で開発者の決定権なんて
あまりないし、そもそも「フレームワークが対応していないから○○な構成は組めま
せん」なんて企業側への説明理由になるわけがない。そこらへんどう考えてんのよ? >>サクーシャ
んでも話通じる人がいてやっぱ 2ch は良いなぁとつくづく思う。WACs ネタとか。
0270デフォルトの名無しさん
NGNG逆なのでは?
クラスタ環境で使うとかなんとかが決まった上で、フレームワークが対応してるので使います、と。
なんでもかんでも同じフレームワーク使いますって態度じゃないと思うのだがどうだろう。
ただ、問題がわかってんならパッチ作ればいいことな気がするな。
0271デフォルトの名無しさん
NGNGサンプル画像も荒くて読めない!
■ このスレッドは過去ログ倉庫に格納されています