△△まだまだStrutsの良さを教えてくださいSession4

このエントリーをはてなブックマークに追加
1デフォルトの名無しさん
Apache Strutsフレームワークについて語るスレ

前スレ
△△さらにStrutsの良さを教えて下さいSession3
http://pc5.2ch.net/test/read.cgi/tech/1088870989/
2デフォルトの名無しさん:05/02/27 09:46:11
過去スレ
△△もまいら漏れにStrutsの良さを教えてください
http://pc5.2ch.net/test/read.cgi/tech/1048030962/
△△つづいて漏れにStrutsの良さを教えてくだっさい
http://pc5.2ch.net/test/read.cgi/tech/1068207164/

エクリプス+Struts開発
http://pc5.2ch.net/test/read.cgi/tech/1086356759/l50

The Apache Struts Web Application Framework
http://struts.apache.org/

Strutsファンページ
http://homepage2.nifty.com/ymagic/struts/

Strutsメモ
http://muimi.com/j/jakarta/struts/
3デフォルトの名無しさん:05/02/27 17:17:03
.Net>>>>>>>>>>>>>>Struts

根拠
http://www.unisys.co.jp/dotnet/pdf/java_vs_dotnet.pdf
4使用した後に特許とか騒ぎ立てるあれですか?:05/02/27 17:21:11
>>3
5デフォルトの名無しさん:05/02/27 19:32:30
PDFみるのかったるいので、要約きぼん
6デフォルトの名無しさん:05/02/27 19:45:17
>>5
形容し難い。超要約すると.NETマンセーw
AはBであると考えられる。なぜならCだからだ。
という基本的な構造を持った文章が書けない人の
言う事は放っておけばよいと思う。
7デフォルトの名無しさん:05/02/27 19:58:26
読まずに要約すると
「AだからBである。それとは関係ないがCである。そのためStrutsより.NET」
ということか?
8デフォルトの名無しさん:05/02/27 20:04:07
>> 3
> 彼らは、Javaこそが正解であり、すべての企業システムはJ2EEで開発すべきだと考えています。

すごい妄想だな。
97:05/02/27 20:15:50
読んでみたら>>7のままだったのでワラタ。
しかし、1年半前の雑誌記事、いまさら持ち出してなにが言いたいんだろうね。
10デフォルトの名無しさん:05/02/27 20:59:38
とりあえず、「穴がない」とか「Windowsプラットフォームに限定されるので
相性問題がない」とか断定しちゃっている辺りが非常に痛い。
11デフォルトの名無しさん:05/02/27 22:08:52
Strutsに脅威を感じてるあたりも、今見れば笑える。
さすがに.netと張り合えるほどStruts単体はたいしたもんじゃないよ。
12デフォルトの名無しさん:05/02/28 11:28:21
html 化された前スレ

△△さらにStrutsの良さを教えて下さいSession3
http://ruku.qp.tc/dat2ch/0502/19/1088870989.html
13デフォルトの名無しさん:05/02/28 11:30:46
ところで,<nested:iterate> って,<nested:root> と同じ働きがあるんですね.
これはすごく便利だ.
今まで全然知りませんでした.今見たら,前スレに少し載っていましたが.
14デフォルトの名無しさん:05/02/28 23:52:43
>>13
<nested:iterate> は indexed="true" も付いてくる。
良くも悪くも、これ重要。
15デフォルトの名無しさん:05/03/01 13:55:20
>>14
えー,そうなんだ.デフォルトで indexed='true' なのですか.
ではその<nested:iterate>の中で,<nested:text>とかを使いたいなら,
ActionFormBean には Collection を返す getter のみならず,int を引数に個別の
オブジェクトを返す getter も用意する必要があるのですね.
...よく考えてみたら,当たり前か.気が付かなかったけれど.
勉強になりました.ありがとうございます.
1614:05/03/01 22:44:51
>>15
おまえ...元々分かってただろ。

<nested:iterate> はデザインの都合で <nested:text readonly="true"> とかすると
indexed="true" が付いてしまって submit 時に getter を探しにいってまう。
で、フォームに getRows(int):Row がなく getRow():List があると
IndexOutofBoundException かなんかで落ちてしまう。

<nested:iterate> で indexed="false" が指定できればいいが、
最新ではどうなんだろ。こんな書き方で回避したが他にやり方あるか知らんか?

<logic:iterate>
 <nested:nest>
17デフォルトの名無しさん:05/03/02 14:53:12
>>16
質問の返答じゃなくて申し訳ないんだけど,なんで index がついたらまずいの?
むしろ,無ければ,サブミットのときに,どの row から来たデータなのかを
指定できなくて困ると思うのだけど.
18デフォルトの名無しさん:05/03/07 22:00:44
<nested> タグはどうも,バグがあるのではないだろうか?

<nested:iterate id='b' property='a'>
<nested:write property='c'>
</nested:iterate>

これは問題なく動いた.ちなみにこの外に<nested:root>で指定された Bean があり,
a はそのプロパティ(型は Collection), b は Map.

しかし,a の Collection を母体の Bean からはずし, request スコープに直接登録
して,以下のコードを試したが,エラーが出て動かない.

<nested:iterate id='b' name='a'>
(以下同じ)

結局,<nested>タグをやめて,以下のように通常のタグで書き直したら動いた.
<logic:iterate id='b' name='a'>
<bean:write name='b' property='c' />
</logic:iterate>

Struts のバージョンは 1.2
19デフォルトの名無しさん:05/03/08 00:55:53
>>18
とりあえず nested:iterate に id は不要
2018:05/03/08 11:18:39
>>19
アドバイスありがとう.

しかし,<nested:iterate> から id 属性を除いても,やはり動かない.
エラーメッセージは,"name must not be null" なんだそれは.

通常のタグに戻すと動く.

ただ,うちのプロジェクトは,タグライブラリに若干手を入れている.
それが理由で,バグが発生したのかもしれない.


21デフォルトの名無しさん:05/03/08 11:36:17
>20
>ただ,うちのプロジェクトは,タグライブラリに若干手を入れている.
ならば質問する前にやることあるだろう。
22デフォルトの名無しさん:05/03/08 13:07:51
StrutsとEJBの違いを教えてくださいー
23デフォルトの名無しさん:05/03/08 20:37:41
>>22
クマー
24デフォルトの名無しさん:05/03/08 21:23:41
なんだってー (AA略
25デフォルトの名無しさん:05/03/09 09:54:52
StrutsとEJBの違いを教えてくださいー
26デフォルトの名無しさん:05/03/09 10:12:53
27デフォルトの名無しさん:05/03/09 12:28:10
Strutsは、Standard Testing Ritch User Transfer Systemの略で
EJPは、Entity Java Beansの略。
28デフォルトの名無しさん:05/03/10 01:38:18
>>27
メタメタだなw
29デフォルトの名無しさん:05/03/10 13:55:44
昨日のCraigの講演より

"Should NOT use Struts HTML tags"

どうするよ藻前ら
30デフォルトの名無しさん:05/03/10 14:07:16
なんだと
31デフォルトの名無しさん:05/03/10 15:52:14
ViewがVelocityな俺は勝ち組
32デフォルトの名無しさん:05/03/10 17:44:46
>>29
結局、strutsってのはなんなんだ。
後から非推奨になる機能が多すぎ。
つーかあの程度の機能の為に、変にこんがらがった実装をしてるし
あれが標準になるとはねぇ
33デフォルトの名無しさん:05/03/10 20:08:30
>>29 >>32
それはJSFを使えってことだよ。今日、Craigに直接聞いてきた。
34デフォルトの名無しさん:05/03/10 21:01:46
>>33
Craig は JSF のポトペタ環境まで面倒見てくれんくせに
勝手な香具師だな。企業の犬になったのか?
それか Craig がすばらしい IDE 提供するつもり?
35デフォルトの名無しさん:05/03/10 21:16:17
そりゃー元々バカンスに行ったついでに適当に作ったフレームワークだから。
まさかこんなに世界中で使われるとは思ってなかっただろうよ。
Strutsの核は画面遷移コントロールと、データ受け渡し形式の定義であり
ActionFormをインターフェースにして、POJOで云々みたいな発想も無かったんだよ、
そしてViewに関してはオマケ程度。 とりあえず基本的な事ができる程度にしか作ってなかった。
36デフォルトの名無しさん:05/03/10 21:45:05
どっちにしろ、strutsは長くないね。
つーか今までが長すぎた。フツーならとっくに廃れてるはずなんだが。
あんなのがWebアプリの標準になりリファレンスや特集記事が出続けて
たとは、Javaの世界って実はミーハーばかりなんじゃないか?
37デフォルトの名無しさん:05/03/10 21:50:31
>>36
どつあた?
ちかなは?
ねがてか?
38デフォルトの名無しさん:05/03/11 00:58:00
strutsは一言で言うと醜いフレームワークだからなぁ
タグも気持ち悪いし、設定ファイルもクソ
commons系のライブラリを生み出してくれたことには感謝するけど早く消えてほしいよ。
39デフォルトの名無しさん:05/03/11 02:02:04
うーん。 そんなに言うほど酷くは無い気がするぞ。
つーか元々Strutsは、設定ファイルを分割しないと管理できないほど
デカいシステムを想定してない感じがする。
ちっこいのを適当かつ簡単に作るのを想定した書式だな。
タグについても同様。 tilesなんかもう見てらんない。 引き時を誤った例。

commons系ライブラリの件については同意。
strutsの隆盛と共に、commonsも盛り上がった感がある。
beanutilsやvalidatorの様に汎用性の高い部分を共有するのは良いことだ。
4029:05/03/11 09:53:38
>>33
Sunのイベントでも同じこと言ったのね、
あたしゃ「稚内大学なんちゃらかんちゃら」で聞いた。

>>34
CraigはStudioCreatorの開発にも顔出してるらしいね。
(あれがeclipseに勝てるかどうかは疑問だけど、ま、一度は
試してみようと思ってる。)

今年CraigがStrutsに死滅宣言を出したように
来年はLindaがHibernateに引導を渡すのでは?
って予感がしたよ。板違いスマソ
41デフォルトの名無しさん:05/03/11 12:16:20
質問です.
ForwardAction って,何のためにあるのでしょう?

<action path='hoge'
    type='org.apache.struts.actions.ForwardAction'
    parameter='jsp/hoge.jsp />

上のようなことを書くなら,

<action path='hoge'
    forward='jsp/hoge.jsp' />

こう書けばすんでしまうと思うのですが.
42デフォルトの名無しさん:05/03/11 12:26:43
>>41
アプリケーションをモジュール単位で分割した場合に、
その記述だとモジュール相対パスとして認識されてしまう。
ForwardActionを使うとモジュール相対パスではなく、コンテキスト相対パス
として解釈される。
4341:05/03/11 13:00:12
>>42
ありがとうございました.
モジュール分割について知らなかったので,この機会に調べてみたところ,
おっしゃる意味は大体わかりました.
44デフォルトの名無しさん:05/03/11 13:08:51
html タグは使うな,というのはなぜ?
ブラウザやWEBオーサリングツールで表示できないから?

それは確かにわかるのだけど,例えば <select> <option> はどう書くのだろう?
Velocity だとこんな感じになるようだけど,

http://d.hatena.ne.jp/wizardp/20050211

<select name="model.value[$num].select">
<option #if($action.getValue($num).select == "A") selected #end>A</option>
<option #if($action.getValue($num).select == "B") selected #end>B</option>
<option #if($action.getValue($num).select == "C") selected #end>C</option>
</select>

これじゃ cgi の世界に逆戻りじゃないか.
<html:select> <html:optionsCollection> がなんと便利なことかと思う.
45デフォルトの名無しさん:05/03/12 19:45:28
Velocityで楽したきゃToolboxかVelomacro使うべ
46デフォルトの名無しさん:05/03/12 20:21:28
>>44
> html タグは使うな,というのはなぜ?
JSFのUIコンポーネントを使えってことだとさ。
strutsのhtmlタグは標準技術ではないし、もうレガシーなものとして発展もしないということらしい。
47デフォルトの名無しさん:05/03/12 20:45:48
標準UIが決められたんだからそれに準拠しる、って事か。
思想が健全でよろしい。
48デフォルトの名無しさん:05/03/12 21:42:26
まー、JSF はまともに使える(ある程度枯れた) IDE が出て
からだな。しかもその IDE が商用だけじゃ話にならん。

そもそも JSF は人間が手書き出来るものじゃないので
(出来るが手書きなら JSF を使わんほうがいい)
既存の手書き仕様から単純に移行するものではない。

少なくとも数年は枯れてない IDE で初期工数がかさむのは確実。
49デフォルトの名無しさん:05/03/13 01:33:27
>>45
Velocimacroですな。
まあ、その辺はカスタムタグみたいなもんか。
50デフォルトの名無しさん:05/03/13 11:02:07
>>48
一理あるようで一理無いと思うぞ。
strutsタグやjstlタグを手書きしているのなら、やっていることは一緒だ。
無償のIDEがあるなら欲しいけどさ。
51デフォルトの名無しさん:05/03/13 11:44:16
JSPへの表示は、htmlタグなしでもELでいけるが、
JSPからの入力を取るほうはどうすんの? 今さら
request.getParameter("hoge")とか書くのはイヤ
なんだけど。
52デフォルトの名無しさん:05/03/13 12:03:53
>>51
JSFを使えって言ってんのがわからんのか
JSFを勉強してから、Struts-Facesを勉強して、それから出直してこい
53デフォルトの名無しさん:05/03/13 12:51:29
これからの新規Web開発ベストプラクティス:

JSFで逝くならJSFオンリーで。

Strutsで逝くなら、struts html タグを使わずに、
JSP2.0が使える環境→JSP2.0で
JSP2.0が使えない環境→Velocityで

54デフォルトの名無しさん:05/03/13 13:12:16
>>51

param.hoge で。
55デフォルトの名無しさん:05/03/13 13:19:20
>>52-53
Struts-Facesはちょっと使えんよ。
Struts1.1ベースでほとんど表示オンリーならいいけどさ。
Shaleの開発始まっているからこれからStruts-Faces使い始めるつもりなら止めといた方がいいね。
BugFixぐらいはしてくれるみたいだけど。
(これからStrutsを勉強し始めるってのも賛成できない。)

俺としては、StrutsでいくならStrutsタグ使った方がいいだろうね。JSTL使ってもいいけど。
StrutsにVelocity併せて使うのはちょっと時代と逆行してる気がするな。
5651:05/03/13 13:27:44
>>52-54 教えてクンなオレにレスありがとう。
あと2年くらいはstrutsかと勝手に思ってたんですが、
個人的にJSFの勉強始めてみます。

でも、新規の業務をJSF1色で作るのはまだなんか
怖い気が(これは、勉強して「素晴らしい」と思えれば
杞憂に終わるか?)。

外注も、struts使えることは抑えてるけど、JSFはどうだろう…
57デフォルトの名無しさん:05/03/13 13:43:10
>>55
Shaleのソース見てから言ってる?まだまだ全然使い物にならんよ。
開発が始まってるって?Craigがproposalとして第一段階のソースを
コミットしたにすぎない。他のメンバーはまだ手を付けていない。
Craigも今年の6月のJavaOneでEAのサンプル程度の物が提供できれば、なんて
言ってたぐらい。(ちなみに、Craigのこの手の発言は半年延びることはザラにある。)

Shaleは"Struts"という名前はついているが、互換性ゼロのまったくの別物。
どちらかというとJSFベースのフレームワーク。

とは言ってもStruts-Facesは独自タグだらけでかなり無理矢理な印象。
こちらについてもCraigは、StrutsからJSFへの移行をするためのMigration Toolとして
積極的に開発を進めていく、と言っていた。

「これからStrutsを勉強し始めるってのも賛成できない」はあと2年経ったら
そういえる状況になるとは思うけど、今はまだこれから勉強してもいい時期だとは思うよ
5855:05/03/13 16:17:34
>>57
もちろんソース見てるよ。Shaleの使い方のWeb立てたいぐらい。
validator対応とコントローラの改良を早くして欲しいね。

Struts-Facesも調べたけど、JSTLとJSFの勉強をかねてやるにはいいけど
じゃあStruts本体はっていうとstruts-config.xmlでAction振り分けるぐらいじゃん。
ActionFormをマネージドビーンとして登録するってのもなんだし、
Struts使うのかどうかってのは、コントローラ部分をstruts-config.xmlでするのか
faces-config.xmlでするのかぐらいのもんだろ。ちょっと大げさに言えばさ。

そんな状態で本屋でStruts1.2対応とかいっている入門書並んでるのみてるとさ、
今からStruts覚えようとかいうやつにはちょっとまてと言いたいんだよ。
お前の言うように2ヶ月かけてStruts覚えるんなら、validatorとかchainとかjsfと
かjstlとか覚えとけよって思う。
そのうえこれからStruts覚えますってやつにStrutsFacesまで覚えろっていうのは
ちょっとナンセンス。
でも、今のスタンダードとしてstrutsの技術を知っておいた方がいいとは思うんだけどな。

もともとJSFはWebでイベントドリブンしようぜという発想なんだから、Struts
などの今までの方式とは合わないんだって。
StrutsするならとことんStrutsやったほうがいい。だからStrutsFacesはお奨めできない。
それにCraigがStrutsからJSFへの移行はStrutsFacesでうんぬんとかいうのはShale以前の話だろ?
59デフォルトの名無しさん:05/03/13 16:41:43
> それにCraigがStrutsからJSFへの移行はStrutsFacesでうんぬんとかいうのはShale以前の話だろ?
昨日言ってた。
6059:05/03/13 16:42:22
ごめん、おとといの間違い
61デフォルトの名無しさん:05/03/13 17:00:11
>>59
そりゃすまんかった。
その要約どっかで見れないかな?
62デフォルトの名無しさん:05/03/13 17:11:13
>>48
jsfが手書きできるのものじゃないって釣りなのか?
それとも想像で言ってる?
63デフォルトの名無しさん:05/03/13 19:15:56
>>55
Velocity→JSP2.0は意外と移行がかんたん。
JSP2.0 <input type="text" name="aField" value="${aForm.aField}">
Velocityでも <input type="text" name="aField" value="${aForm.aField}">と書ける。
ま普通は
<input type="text" name="aField" value="$!aForm.aField">
かもしれないが。

strutsタグからのほうが移行の敷居が高い。

Craigの話でも
テーゼ:JSP1.n+拡張タグ(JSTL,Strutsタグ含む)

アンチテーゼ:Velocity,FreeMakerなどのテンプレートエンジン

ジンテーゼ:よりテンプレートライクなJSP2.0
とアウフヘーベンしていたようだった。
Java WorldでもJSP2.0を「テンプレートエンジン」扱いしてたし。

短期見通しで上げられていたJSF2.0&JSP2.1の統合を考えると、
移行期にある現在、学習コストの低い&コンテナVer.を選ばないVelocityをつなぎ
として使うのは意味があると思うよ。
64デフォルトの名無しさん:05/03/13 19:30:06
JSP2.0の式言語でサニタイズってどーやるのがいいんだ?
Velociteyでは書き出しをハンドリングして自動でやらせてるけど
65デフォルトの名無しさん:05/03/13 19:35:57
>>64
c:outを使う
66デフォルトの名無しさん:05/03/14 21:22:34
Strutsサイトの ロードマップとかマイルストーンとか更新されてた。
1.2で最後かと思ってたけど1.3も出そうだな。

ところでChainを本格的に導入するとどうなるんだ?
今までのActionがなくなって、Chainのコマンドとして実装するのかな。
だったらstruts-config.xmlでやっていたナビゲートもChain用のコンフィグ
として記述するようになるから、Strutsとは名ばかりのまったく別物になる
気がするんだけど、既存資産を生かすのが目的だろうか?

iBatisがどうのこうのっていうのもよく分からん。
だれか解説して。
67デフォルトの名無しさん:05/03/14 23:57:27
>>63
間違えられやすいが、
×FreeMaker ○FreeMarker
ちなみに、FreeMarkerの開発者はVelocityのMLを荒らしたことがある。
68デフォルトの名無しさん:05/03/16 21:10:33
すみませんが,質問です.

<html:multibox property='id'>を Validator で検証するにはどうしたら
良いでしょうか?
受け手には public void setId(String[] id); が必要になるのですが,
これの入力を検証する方法がわからないのです.

チェックしたい項目は,
・セットされた配列の文字列は,すべて「整数」でなければならない.
・要素数は1以上(こちらはそれほど必要でありません).

もしかして,これは Validator では無理で,validate() メソッドを
手で書かなければならないのでしょうか?
69デフォルトの名無しさん:05/03/16 21:39:09
>>68
意味不明だな。

> ・セットされた配列の文字列は,すべて「整数」でなければならない.
なぜこれをValidatorで検証しなければならないのか?

>Validator では無理で,validate() メソッドを手で書かなければならない
どんな検証でも、Validatorでは無理でvalidatoe()メソッドを手で書かなければならない
ものなど無いと思う。標準で用意されているルールで要件を満たせなければルールを作ればよい。
70デフォルトの名無しさん:05/03/17 10:51:03
幻想だな
7168:05/03/17 12:32:25
>>69
すみません.我ながら意味不明でした.
標準の validator-rules.xml 内の定義で済ませられないか,というつもり
でした.
今回は,<html:multibox>を使っている ActionForm が一つしかなかったので,
validate() メソッドで済ませることにしました.
もし,この validation をほかでも使うことになったら,新しいルールに
昇格させるつもりです.

ありがとうございました.
72デフォルトの名無しさん:05/03/20 08:46:19
Strutsのスレッドセーフに関する質問です。
googleで"スレッドセーフ Struts"でしらべました。

ttp://www.atmarkit.co.jp/fjava/rensai2/webopt04/webopt04.html
@ITで調べたところ、結論としては、
"クラス変数や、Servletのインスタンス変数については、
設計段階から使わないようにするなど規約化を行ってから開発すること"
と結んでいます。しかし、マルチスレッドではServletのインスタンス変数
も危険であるとの記述もあり、結局なにをすべきかわからない状態です。
(シングルスレッドについての記述もありますが、パフォーマンスが落ちる
との記述もあり、さらに混乱します。)

今回、SOFTBANKPublishingの『Apache Strutsハンドブック』黒住幸光著
も参考にしましたが、結局Strutsで何をすれば、スレッドセーフになるのか
わからなかったため、ご教授願います。よろしくお願いいたします。

--------以下上記書籍引用--------------------
Actionクラスに限らず、すべてのアクションのインスタンスは
複数のスレッドで共有されます。複数のHTTPリクエストが同時に
同じアクションを実行した場合、両者は同じアクションのインスタンス
をアクセスしていることになるので、実装上注意が必要です。
アクションを創る場合には必ずスレッドセーフなクラスとして作成
してください。


73デフォルトの名無しさん:05/03/20 09:01:21
は?
インスタンス変数を使わないとか、Springで管理してリクエストごとにオブジェクト生成させるとか。
7472:05/03/20 09:27:38
72です。
>>73 様
レスありがとうございます。

具体的には@ITの下記の記事に、インスタンス変数すら
危険であるという記述があるため困っているのです。
結局は、シングルスレッド化しなければならないのでしょうか、、。
(シングルスレッド化はパフォーマンスに問題があるそうですが。)

---------@IT引用--------------------
インスタンス変数にも注意せよ
インスタンス変数といってもいろいろあるが、ここで話題にするのは
ServletやJSPのインスタンス変数である。
まずは実際にあったソースコードを紹介しよう。
この例では、マルチスレッドモデルでServletを動作させていたため、
スレッド間でインスタンス変数paramが共有され問題となったのである。
75デフォルトの名無しさん:05/03/20 09:33:24
アクションやServletの中でインスタンス変数を使わなきゃいいだけじゃないの?
つーか継承して特定メソッドを書くだけだからふつー使わないし
76デフォルトの名無しさん:05/03/20 09:48:30
だ・か・ら〜
インスタンス変数は使うな!そのまんまなんだよ。

ローカル変数のみを使え。
77デフォルトの名無しさん:05/03/20 09:59:27
>>74
Springで管理してリクエストごとにオブジェクト生成させるとか。
7872・74:05/03/20 10:17:53
>>75 >>76 様 ありがとうございます。
>>74 様 Springについては別途調査します。ありがとうございます。
インスタンス変数というのがいまひとつ理解できなかったので、
ご迷惑をおかけしております。
(staticでないものがすべてインスタンス変数であると考えていたため。)
結局のところ、下記のとおりでよろしいでしょうか?
よろしくお願いいたします。m(__)m

import xxx;
public final class XXXX extends Action {
  //ここで変数宣言することはないですが、
  //ここだと危険だということですか?(最終確認)
public ActionForward execute (ActionMapping map,
ActionForm frm,
HttpServletRequest request,
HttpServletResponse response) {
  //ここに処理をかけば問題はないですか?
  //実際の処理は、他のクラスをここでインスタンス化し、
  //処理を委譲します。(最終確認)
return map.findForward("xxx");
}
}
79デフォルトの名無しさん:05/03/20 10:37:02
ローカル変数のこともインスタンス変数だと思ってたわけか?
「ここに処理を書けば」って、他にどこに書くんだ?
さきにインスタンス変数について調べれ。
8072・74・78:05/03/20 11:36:40
>>79 様 ありがとうございます。
おはずかしながら、変数は、クラス変数(static)と
インスタンス変数(クラス変数以外の変数)であるとおもっておりました。
そのうえ、メソッドについてもクラスメソッド(static)と
インスタンスメソッド(クラスメソッド以外)であると、、。

そして、インスタンスメソッド内で定義された変数は
すべてインスタンス変数であると誤解しておりました。
(=これはローカル変数と呼ばれるものなのですね?)

>「ここに処理を書けば」って、他にどこに書くんだ?
ここしかないですよね。。ここにしか通常は書かないことから、
SOFTBANKPublishingの『Apache Strutsハンドブック』黒住幸光著
をよんで、悩んでしまった理由です。

丁寧に皆様ありがとうございます。
8172・74・78・80:05/03/20 11:38:27
書き忘れました。

インスタンスメソッドについては、インターネットで
もう一度、勉強してみます。ありがとうございます。
>>79 様
82デフォルトの名無しさん:05/03/20 18:03:26
うむ。
こんな恥ずかしいこと、リアルの世界で指摘されなくてよかったな。
8372・74・78・80・81:05/03/20 19:37:07
>>82 様
まったく、そのとおりです。勉強します。
みなさまありががとうございました。m(__)m
84デフォルトの名無しさん:05/03/20 20:59:43
標準たるJSFが出た以上、今更Strutsでも無いだろうに。
85デフォルトの名無しさん:05/03/20 21:52:05
Strutsはいつまでも標準フレームワークであり続けるだろう
JSFは専用のIDEが出るまでは普及しない。
Strutsを否定するものは
86デフォルトの名無しさん:2005/03/21(月) 13:27:19
標準に従わず独自仕様に固執…Microsoft的だな
87デフォルトの名無しさん:2005/03/21(月) 17:58:58
質問があります・・。
【質問1】
最終的にやりたいことは、以下のコードをJSTLで書き直すことです。

<html:form action="/FormAction">
<table>
<tr><th>ユーザID:</th><td><html:text property="id" /></td></tr>
<tr><th>名前:</th><td><html:text property="name" /></td></tr>

<tr><td><html:submit property="submit" value="実行" /></td></tr>
</table>
</html:form>

しかし、<html:form action="/FormAction">を<form action="/FormAction" method="POST">
として同様にかきますと、/FormAction がないとか怒られます。

【質問2】
これは Strutsで書いたコードがどのようなJSPに展開されているか自分がよくわかっていないためと
思いました。どのようなコードに展開されるかはStrutsのどの部分を見ればわかりますでしょうか。
教えてくださいませ・・。
88デフォルトの名無しさん:2005/03/21(月) 18:19:12
>>87 【質問1】だけ。
<form action="飛ばすJSPページのURL">
<table>
<tr><th>ユーザID:</th><td><input type="text" name="id" /></td></tr>
<tr><th>名前:</th><td><input type="text" name="name" /></td></tr>

<tr><td><input type="submit" name="submit" value="実行" /></td></tr>
</table>
</form>

受ける方のJSPページでは、${param.id} や ${param.name} でパラメータが見えます。
なお、<form method="post" にして、
表示するときは <c:out>タグや fn:escapeXml()関数 を使うのが安全です。
8987:2005/03/21(月) 18:34:21
>>88 速い!ありがとうございます!
説明がちょっと言葉たらずだったのかもしれません。

JSPのページに飛ばしたいのではなく、struts-config.xml を介して、FormAction.javaに
飛ばしたいのでした。以下はstruts-config.xmlの一部抜粋。
<action-mappings>
<action path="/FormAction" type="hoge.FormAction">
<forward name="success" path="/result.jsp"/>
</action>
</action-mappings>

Strutsのhtmlタグを使えば問題ないのですが、先程のように書き直すと、

HTTPステータス 404 - /FormAction
The requested resource (/FormAction) is not available.

と言われてしまうんですよね・・。
90デフォルトの名無しさん:2005/03/21(月) 21:29:28
>>89
/FormAction.do
91デフォルトの名無しさん:2005/03/21(月) 21:30:55
>>89
strutsタグで書いて実行してHTMLソース見れば解決。
9289:2005/03/21(月) 21:48:15
>>90
それはやってみたんですけど do つけない場合と同じ結果でした・・。

>>91
ありがとうございます!!それがまさにほしかった答えでした。

皆さんわざわざショボい問いに答えてくださってありがとうございました。
93デフォルトの名無しさん:2005/03/24(木) 19:59:56
すみませんが,質問です.
Struts 実行中のカレントディレクトリはどこなのでしょうか?

Velocity の設定で,
file.resource.loader.path の指定を,カレントディレクトリに対する
相対パスにしたいのです.
開発機 (Windows) と本番機 (Linux) とで,絶対パスが違いますので.
94デフォルトの名無しさん:2005/03/24(木) 21:57:16
>>93
Strutsを実行してるコンテナに聞け。
9593:2005/03/24(木) 21:58:33
とりあえず,カレントディレクトリはまだ分かりませんが,
velocity.properties には相対ディレクトリだけを保持させて,
Velocity.init() 後にVelocity.setProperty() で getRealPath() を
元の設定値に加えることで解決しました.
96デフォルトの名無しさん:2005/03/24(木) 21:58:45
しかし、WebアプリでVelocity使ってるときにカレントディレクトリがどこかって必要か?
ってか、Struts関係ねぇし。
97デフォルトの名無しさん:2005/03/25(金) 11:40:16
教えてください。

クライアント側に一部Flashを使う部分があって、このFlashコンテンツとの間で
データのやり取りをしなければいけないんですが、strutsを使ってる場合
Flashにデータを返す仕組みってどうすればいいんでしょう?

生Servletみたいに、outputのstreamに直接レスポンスのデータを返す事はできないですよね?

もしくは、普通にforwardさせて、そのforwardさせたJSPの中に
戻したいデータをダンプするコードを書けばいいんですかね?

struts-config:
<forward name="success" path="toFlash.jsp"/>

toFlash.jsp:
<% String resData = (String)request.getAttribute("xmlResponse"); %>
<%=resData%>

もし、ご存知の方がいらっしゃいましたら、ご教授お願いします。
98デフォルトの名無しさん:2005/03/28(月) 06:06:21
いまの私がいるプロジェクトでは、「Strutsタグはもう古いので使用しない」らしくて、
JSPが

<input type="text" value="<c:out .....................>">

とかみたいに大変なことになってるんですが、最近はこれが普通なんですか?
99デフォルトの名無しさん:2005/03/28(月) 07:13:16
たしかにStrutsタグはもう古いのでJSTLが使えるところはJSTLを使うのだけど、フォームやメッセージ関係はStrutsタグ使うよ。
それに、Strutsタグはもう古いというのなら、JSP2の式言語も使わないと。
<input type="text" value="${...}">
だな。
100デフォルトの名無しさん:2005/03/28(月) 07:22:37
>>99
あのな、それだとサニタイジングされないんだよ。
だから、>>98のやり方を使うのが普通。
<input type="text" value="<c:out value="${...}">">
101デフォルトの名無しさん:2005/03/28(月) 08:18:31
>>100
それならおとなしくhtml:text使った方がいいと思うが。
どっちにしろ、自分のまわりだけで使ってることを普通と思うのはよくないと思うよ。
102デフォルトの名無しさん:2005/03/28(月) 08:36:40
ようするに「古いから」という理由で使用しないことを決めるやつがアフォ。
もっと便利なものがあるからとか、デメリットがあるからということで使用しないことを決めるべきだ。
103デフォルトの名無しさん:2005/03/28(月) 08:51:22
Velocityみたいに式言語で書き出すときにエスケープする方法ないのかしら?
104デフォルトの名無しさん:2005/03/28(月) 10:10:54
ないね。欲しいね。というか必要だよね。
105デフォルトの名無しさん:2005/03/29(火) 00:27:26
>>97
Flash(ActionScript)側の話になるから完全にスレ違いだと思うが、
Flash側でloadVariables(ttp://〜/foo.do?param=bar)とかLoadVars.load()とか
ちゃんとやるならXML.load()とか呼んで、
Struts側はtext/plainなりapplication/xmlなりで単純にデータを吐くようにするだけじゃね?
あとFlash起動時にパラメータ渡すなら、<object ..>タグの中にflashVarsパラメータセットするか。
どっちにせよActionScriptのヘルプを参照のこと。
てかここで聞く前にFlashプログラマとコミュニケーション取れ。
106デフォルトの名無しさん:2005/03/29(火) 14:33:42
>>105
レスさんくす。でも、やっぱり意図が伝わってない・・・すまん。

聞きたかったのは、ブラウザじゃないクライアント(Flash)からリクエストを
受け取ったstrutsを使っているApServerは、どうやってレスポンスを返すのが
一般的なのかな?と、言うのが聞きたかったとkろなんです。

例えば、>>97に書いたように、普通のブラウザに返す仕組みと同様に、
JSPにforwardして、そのJSPの中で、返却したいデータを書き出すのが普通?
それとも、Actionのexecuteの中で直接outputstreamかなんかに書き出して、
flashへレスポンスを返して、forward先はdummy(空)のJSPだったりとか?

「俺のところはこうやってるよ」、「こうすればできるよ」などが聞けたらありがたいと
思ってます。
107デフォルトの名無しさん:2005/03/29(火) 16:11:50
普通にswfが要求する文字列をActionから吐き出して、execute()はnullを返せばいいんでないの?
108デフォルトの名無しさん:2005/03/29(火) 16:12:24
>>106
Strutsを使わない。
109デフォルトの名無しさん:2005/03/29(火) 18:09:38
>>106
あー、そりゃこちらの言葉が足りなかったかもしれん。
>Struts側はtext/plainなりapplication/xmlなりで単純にデータを吐く
は、 普通にforwardしてforward先のJSPで出力すればいいと言いたかった。
つまり、>>97で言う後者だ。
一般的かどうかは知らんが「俺のところはこうやってるよ」。

せっかくStrut使うんならStrutsタグ使うとすると
--XXX.jsp----
<%@page contentType="text/plain"%>
<%@taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %>
title=<bean:write name="xmlResponse" value="title" />&name=<bean:write name="xmlResponse" value="name" />&...
-------------
て感じで。
上記ぐらいのプレーンデータじゃStruts通さず吐いたほうが早いかもしれんが、
ループありありなXMLをがっつり構築するとかになるとメリットが出てくる。
110デフォルトの名無しさん:2005/03/29(火) 19:56:43 ID:
>>107-109
みなさん、ありがとさんです。

レスもらった3つの方法で、考えてみます。
たぶん、>>109
>ループありありなXMLをがっつり構築するとかになるとメリットが出てくる。
が、こちらもたくさんありそうなので、この方法を採用しそうな気配。

つたない日本語&読解力ですまん。
ありがとうございました。
111デフォルトの名無しさん:2005/03/29(火) 21:23:26
普通にWebサービスかなんかでやるのが手軽なんじゃねぇの?
112デフォルトの名無しさん:2005/03/29(火) 22:52:48
すいません。

strutsのサイトで、サンプルソースってどっから見ればいいですか?
strutsでファイルのアップロードに関するソースはそこにあると
聞いたんですが見つけきれなくて。
113112:2005/03/29(火) 23:06:48
自己レス。
バイナリファイルから解凍すればでてくるのね…スマソ。
114デフォルトの名無しさん:2005/03/31(木) 17:59:15
struts今度初めて使おうと思ってるんですが、
eclipseのプラグインって1.2対応のやつ、ないんですね。
115デフォルトの名無しさん:int 2ch =05/04/02(土) 03:22:35
1.2の新機能を使うまでもない。
116デフォルトの名無しさん:2005/04/03(日) 14:47:12
スイマセンStrutsの設計について質問なんですが
入力文字のチェックはFormでvalidateします
が、入力項目のDB存在チェックはFormにvalidateさせるか
アクションにやらせるかで迷っています
システム屋というかPG側の人間は「アクションでやれ」という方が多いと思いますが
客側ユーザ側からみれば、さっきはエラー表示していなかったのに
なぜ急に「存在しないコードです」などと出てくるんだ?最初からエラーは全部表示しろ
となります

作り方としてはFormで入力チェックしてエラーがあろうがなかろうがアクションに制御移る
アクションでDBチェック後、ここで入力エラーがあるなら遷移元に返す
でもそんなことやるんだったら、FormでDB呼び出してvalidateしたほうがいいと思うんだけど
117デフォルトの名無しさん:2005/04/03(日) 16:24:36
DB存在チェックっていうのがどういうものかによって変わってくると思う
DBに入れているかいないかにかかわらず、選択肢に限りがあるものはそれ以外が選択できないように画面設計するのがベスト。
例えば性別、都道府県、部署、とかそういうたぐいのもの。
逆に数千件以上あるような商品コード(商品マスタ)、顧客コード(顧客マスタ)とかの指定はDB検索して「存在しません」と表示させるのがベスト。
あとは、エラーとなったときにどこに表示させるか(例えば入力画面にもどってとか)、どういうエラーメッセージを表示させるかというユーザインターフェイスの設計の能力が問われる。
118デフォルトの名無しさん:2005/04/03(日) 16:31:59
期待している答えが違う
119デフォルトの名無しさん:2005/04/03(日) 17:08:33

> システム屋というかPG側の人間は「アクションでやれ」という方が多いと思いますが
> 客側ユーザ側からみれば、さっきはエラー表示していなかったのに
> なぜ急に「存在しないコードです」などと出てくるんだ?最初からエラーは全部表示しろ
> となります

アクションでやって、客側から最初からエラーが全部表示できるようにすればいい。
120デフォルトの名無しさん:2005/04/03(日) 23:07:06
>>119
なんだ、ただ茶化しているだけか。
どういう意味かまじめに考えちまった。
121デフォルトの名無しさん:2005/04/04(月) 00:49:34
まじめに考えてもわからなかったから、茶化してることにして自分を納得させるしかなかったというわけか。
122デフォルトの名無しさん:2005/04/04(月) 00:52:38
ちなみに質問者は俺
120は別人
123デフォルトの名無しさん:2005/04/04(月) 01:05:14
ま、プログラマの信念がユーザーインターフェイスに悪影響を与えることはあってはいけない。
そんな信念は必要ない。
124デフォルトの名無しさん:2005/04/04(月) 21:26:20
>>118,120,122
まともな回答が理解できないのは君の能力のなさが原因だよ
125デフォルトの名無しさん:2005/04/05(火) 00:25:20
すみません!!
教えてください!!
JSP⇒Action⇒Action⇒JSPと遷移させてるのですが、
二つのActionが同じActionFormで定義されている場合、
前ActionでActionFormのプロパティにセットしたものを、
後Actionでゲットしても、反映されないのでしょうか?

今日、それに気づいたのですが・・・どなたか反映されない
理由をご教授ください!!
126125:2005/04/05(火) 00:29:51
JSPでは、Action@の処理により、ActionFormの値をそのまま
表示させています。
JSPのサブミットで、ActionAに飛びます。
ActionAでActionFormのプロパティの値をすべて""にしています。
そして次のActionBで元のJSPに遷移します。

という流れでJSPのinput等の値がクリアされるかと思ったのですが
そうじゃないみたいなんです・・・。

Strutsは詳しくなくってすみません。
127デフォルトの名無しさん:2005/04/05(火) 00:52:14
>>125
ActionFormのスコープによる。

それから、インターネットで機種依存文字は使うな。
およそプログラマのやることとは思えないな。
128デフォルトの名無しさん:2005/04/05(火) 08:55:51
OS・ブラウザを限定すれば問題ない
129デフォルトの名無しさん:2005/04/05(火) 09:14:31
まあ2chで言うことじゃないけどね。
130デフォルトの名無しさん:2005/04/05(火) 11:08:51
2chで機種依存文字を注意する猛者、何年ぶりだろうか。
131デフォルトの名無しさん:2005/04/05(火) 11:13:41
ドコモの絵文字などはともかく、需要のある文字をいつまでも対応しない
怠慢なOSに好感を持てませんね。別に拡張できないわけじゃないし。
○数字はともかくローマ数字が使えないと、検索その他いろいろ不便だよね。
132デフォルトの名無しさん:2005/04/05(火) 12:07:17
ルパンV世はぐぐれないね。
133デフォルトの名無しさん:2005/04/05(火) 13:02:33
>>116
どっちがいいか悩んでるのなら
クライアントである客の意見にするべきだと思うが。
134デフォルトの名無しさん:2005/04/06(水) 22:39:34
>>124
117は明らかに期待している答えと違う
>DB存在チェックっていうのがどういうものかによって変わってくると思う
>DBに入れているかいないかにかかわらず、選択肢に限りがあるものはそれ以外が選択できないように画面設計するのがベスト。
>逆に数千件以上あるような商品コード(商品マスタ)、顧客コード(顧客マスタ)とかの指定はDB検索して「存在しません」と表示させるのがベスト。
だから、「存在しません」と表示させると、自分は言っている

>>133
いやだから、客の要求にこたえる前提で
DBチェックをどこ(FormかActionか)でやらせますか?と言う話なのです

通常のテキストチェックはFormでやります
そこでエラーになったら遷移元に戻ります
で、「DBの存在チェックはFormでやるのはおかしいですか?」ということをききたかったのです。
135デフォルトの名無しさん:2005/04/06(水) 22:48:56
>>134
>「DBの存在チェックはFormでやるのはおかしいですか?
おかしい。それは業務ロジック。モデル層でやるべき。
136デフォルトの名無しさん:2005/04/06(水) 23:15:22
>>135
そう、そうなったときに
メッセージセットして
return "input_error";//入力画面に戻る遷移先用意する

にするのがいいってことですか?

「おかしい」というのは「それが業務ロジック」だからと言う理由ですね?
逆に「(広い意味で)入力チェックロジック」と考えた場合、Actionでやるのもおかしいと思いませんか?
Formで入力チェックし、その結果に関わらずActionに処理を移すと言う書き方になり、それもそれでおかしいと思う

DBアクセス=業務ロジックと考えるべきか
機能として処理の書く場所を決めるべきか
137デフォルトの名無しさん:2005/04/06(水) 23:20:05
続き
私はDBチェックがModelとして単体のクラスとなっているのであれば
Formから呼んでもかまわないと思います
ただ、たしかvalidateメソッドはExceptionをthrowするメソッドではないので(ちょっと思い出せないが)
DBエラーがあった場合にvalidateのなかで解決しなければならず、これもどうかとは思いますが
138デフォルトの名無しさん:2005/04/06(水) 23:24:17
RuntimeException投げればよいかと。
139デフォルトの名無しさん:2005/04/06(水) 23:52:42
validate()でcatchして、ActionErrorを作って、戻り値のActionErrorsにadd()するのがいいんじゃね?
140デフォルトの名無しさん:2005/04/07(木) 13:39:59
>>137
最初からエラーを全部表示したいのであれば、validateでエラーをセッションに保存して、
ActionでDB接続もすればよいのでは?自分もFormでDB接続はしたくないですね。

>>138
本気で言ってますか?
141140:2005/04/07(木) 13:44:55
追記
ただ、DB接続はコストがかかるので、単純な入力チェックが完了した段階で
行うべきだと思います。つまりユーザには2段階でエラーが表示されると納得してもらう。
142デフォルトの名無しさん:2005/04/07(木) 20:32:01
で、DBの存在チェックというのが実は
1.乙女座
2.蠍座
・・・
で、1から12までの数字を入れてください。っていうようなものだったりする罠。
13を入れると存在しませんと表示される。

入力文字のチェックはFormでvalidateしますが、
DB接続はコストがかかるので・・・・

最初から出せよって。
143デフォルトの名無しさん:2005/04/08(金) 07:18:32
へびつかい座が追加されるかもしれないじゃないか
144デフォルトの名無しさん:2005/04/08(金) 09:09:43
>>140
DBエラーが出たらログ吐いて「ただいま混みあってます」を表示するくらいしかないだろ。
RuntimeExceptionに変換してコンテナに処理させればいい。
145デフォルトの名無しさん:2005/04/08(金) 09:10:58
>>142
コンボボックスでやれ。
それか、値が詰まってるなら範囲チェックだけで充分かと。
146140:2005/04/08(金) 15:43:53
>>144
業務ロジックでRuntimeExceptionをスローするなんて
正しい例外処理だと思ってる?
147デフォルトの名無しさん:2005/04/08(金) 17:36:08
>>146
君の意見を聞いてると、
formでやりたいんだけど普通ではあまりしないのは知ってる。
だから誰かに「いいんじゃない?」といって欲しい、そう聞こえる。

そう思ってるのなら、formでもいいんじゃねの?とは思う。
148140:2005/04/08(金) 17:52:18
>>147
えっと、私は元の質問者じゃないですよ。念のため。
私が書いたのは140、141、146のみ。

>だから誰かに「いいんじゃない?」といって欲しい、そう聞こえる。

ここの意味が分からないのですが。「いいんじゃない?」というのは何に対して?

ちなみに業務でstruts使ったことありません。だから

>formでやりたいんだけど普通ではあまりしないのは知ってる。

も不明なのですが、普通はどうやるのですか?
149デフォルトの名無しさん:2005/04/09(土) 00:58:08
結論:これからはJSF
150デフォルトの名無しさん:2005/04/09(土) 02:40:12
JSFは使えるレベルのものはあるのか?
Strutsはダサいからあまり使いたくないんだけど
151デフォルトの名無しさん:2005/04/09(土) 02:57:41
JSFは標準仕様だけじゃ全然機能が足りないよね。
今JSFを使うなら、ベンダー独自実装の機能をバリバリ使うしかない。
152デフォルトの名無しさん:2005/04/09(土) 09:20:07
JSFはビュー周りのものだから、強力なコントローラで融合してくれるようなフレームワーク欲しい
153デフォルトの名無しさん:2005/04/09(土) 10:40:11
>>152
どこが不満?
154デフォルトの名無しさん:2005/04/09(土) 11:34:35
そこでJPF@WebLogic Workshopですよ。
155デフォルトの名無しさん:2005/04/09(土) 14:40:36
>>154
Beehiveだね。
156デフォルトの名無しさん:2005/04/09(土) 20:22:56
BeehiveってTOMCATで動いた実績あるの?
157デフォルトの名無しさん:2005/04/09(土) 20:29:02
>>153
ユーザインターフェイス(ビュー)関連は画期的といえるほど便利になった。
Webとかいうことを気にすることなくイベントドリブン的なプログラミング形式になった点は非常に満足。

151がいうような点はSUNのRIならそうだけど、MyFacesとかに切り替えればいいだけ。
たまたまネットで見かけたけど、普通のGUIの部品(Bean)のように有償無償のそういう市場もある。
JSF用のtaglibもフリーソフト的なものもちらほらあるし、レンダラもスキンのように好きなのに切り替えてというようになるだろう。


だけど、JSFの目的からすればそれは当然の事なんだけど、Strutsと比べてしまうとコントローラ部分がまったくない。
今までWeb開発とかでStrutsのようにコントローラ部分のフレームワークがあったからやっぱりそれと比べてしまうと、そこに当たる部分が(Strutsに変わる部分が)ほしいんだけど、
いまのところJSFとうまく融合できているのがない気がする。
俺が知らないだけかもしれないけどさ。

Struts1.xとの組み合わせは統一感がないので違和感感じる。全然方向性が違うのを無理してつないでいるからね。
かといってShaleがまだまだベータも出そうにない。
ShaleにSpring組み込むとかいう話だけど、(SpringにJSFとかStrutsにJSFとか逆じゃなくて、)まだ形にすらなってない。
こういう点がJSFやるうえで不満。


あと、金のない俺からすれば、開発環境でGUIがない点が不満。
EclipseのVisualEditorのようなものが出てきてくれたらうれしいんだけどさ。
やっぱfaces-config.xmlはある程度の規模になってくるといちいち書いてらんない。
プログラマが直接いじるんじゃなくて、GUIの開発ツールで勝手に自動編集されることを前提としているだろうからね。
158デフォルトの名無しさん:2005/04/09(土) 20:48:32
> あと、金のない俺からすれば、開発環境でGUIがない点が不満。
JSFのメリットを生かし切れてないので悔しいけど、
視点を変えれば、この点に関してはStruts使ってもJSF使っても同じでしょ。
faces-config.xmlを書くのがstruts-config.xmlを書くよりも大変だとは思わないし。

ベンダ依存の機能を使いたくない、とか金がないのから
Shaleが育つのを待ちながらStrutsを使うのがいいんじゃないかな。
159デフォルトの名無しさん:2005/04/10(日) 10:29:16
社会人と趣味人がはっきり分かれてると思われ。
仕事でやってるならならそう易々と新しい開発環境や新技術なんて使わんわけで。恐ろしい。
無職の奴は、将来のために役にたつ物をとか考えるんだろうな。
今実績をあげていった先にしか、将来なんてないのにさ(・∀・)ニヤニヤ
160デフォルトの名無しさん:2005/04/10(日) 11:24:07
> 将来のために役にたつ物をとか考えるんだろうな。
社会人でも、今の業務でいっぱいいっぱいで先の技術に目を向けない奴はダメダメだけどね。
161デフォルトの名無しさん:2005/04/10(日) 13:08:27
>>160
同意。10年後か20年後、今のCOBOLerと同じようになっちゃうね。
162デフォルトの名無しさん:2005/04/10(日) 16:29:23
>>160-161は無職、と。
163デフォルトの名無しさん:2005/04/10(日) 19:39:44
やがてXMLデータサーバ+SWT(JavaWebStart)クライアントになるから、
Strutsは消えるよ!
164デフォルトの名無しさん:2005/04/10(日) 19:56:09
使わないからといって評価もしないのは、社会人というより社蓄だな。
165デフォルトの名無しさん:2005/04/10(日) 19:56:38
>>163
SWTは消えかかってますが・・・
166デフォルトの名無しさん:2005/04/10(日) 21:11:04
>>159
ごめんね、お母さんはじめてだからよくわかんなくて。
何で「今実績を上げる」と「将来のために役にたつ物をとか考える」の2者択一なの?
両方いっぺんに出来ないの?
167デフォルトの名無しさん:2005/04/10(日) 21:18:38
Flex+Strutsはよさげ。
168デフォルトの名無しさん:2005/04/10(日) 21:21:03
>>159
俺の知っているダメなやつも同じこといってるね。
パッチあてるのでも恐ろしい。バージョンアップも恐ろしい。
ど素人ならわかるけど、システム部門の人間がだよ。

自分が知らないものはなんであれ恐ろしいのは当然だ。
人間は歩みを止めたらそこで終わりなんだ。
本当に恐ろしいのは知ろうとしないことなんじゃないのかな。
169デフォルトの名無しさん:2005/04/11(月) 09:56:43
テストもせずに人の話だけ鵜呑みにして顧客のシステムをいきなりバージョンアップしようとするヤツは恐ろしすぎ
170デフォルトの名無しさん:2005/04/11(月) 10:20:32
でも、この話の流れとは関係ないね。
171デフォルトの名無しさん:2005/04/11(月) 10:22:22
そういうなよ
172デフォルトの名無しさん:2005/04/11(月) 10:25:47
ま、そろそろスレ違いぎみだな。
>>159あたりは、みんながひととおりノウハウためて落ち着いてきたころにノウハウなしに導入すればいいってだけのことだな。
173デフォルトの名無しさん:2005/04/12(火) 11:35:47
JSFの隠れたメリットは
managed-bean限定ではあるがsetterInjectionを採用したDIコンテナ、っつーことだ。
POJOで書ける。

strutsみたいにres/reqを引数に取る義務はねぇし、method名も強制されない。
res/reqは必要な時だけcontextに問い合わせすればよい。

例えJSFが時代遅れになってもmanaged-beanは再利用可能だ。

現在出回ってるJSF教科書のソースは、setterInjectionを利用しない汚いソースが
多いが、マネすべきではないと思っている。
174デフォルトの名無しさん:2005/04/12(火) 13:22:53
>>173
別に隠れてるわけじゃないが・・・
Strutsと比較したときの大きなアドバンテージだと思うよ
175デフォルトの名無しさん:2005/04/12(火) 21:34:58
>>173
StrutsShaleのusecaseデモで使われているよね
176デフォルトの名無しさん:2005/04/13(水) 23:31:52
>>172がStrutsのノウハウを溜めた頃には、廃れている罠。
177173:2005/04/14(木) 13:44:28
オレは既にJSFに主軸を移しちまっているんで何も知らないのだけど・・・

ShaleもDIになるの?
既存のStrutsTaglibがそのまま使えるWebDIコンテナってイメージで合ってる?

差し替えリゾルバを使えばJSF-Shale間で相互にbeanを参照できるとか?

知ってる人情報くさい。
178デフォルトの名無しさん:2005/04/14(木) 14:24:39
>>177
> 既存のStrutsTaglibがそのまま使えるWebDIコンテナってイメージで合ってる?
ちがう。
ShaleはStrutsという名前は付いているが、既存のStrutsからは何も引き継いでいない。
JSF + Commons Chain ベースのフレームワーク。
当然、ViewはJSFだ。
現状のShaleのコードでは、JSFのconfigファイルとChainのconfigファイルの両方がアプリ中に存在している。
179デフォルトの名無しさん:2005/04/14(木) 14:25:18
JSFだけじゃコントローラ機能が足りないからそこを補うフレームワークといえる。
180デフォルトの名無しさん:2005/04/14(木) 15:20:29
ちょいとおせぇてください。
対象となるWebアプリが、

・DBから引いた情報を、テーブル構造で一覧化表示して、その内部には
 UIとなるフォーム部品(コンボボックスとかチェックボックスとかテキストフィールドとか)が
 多数配置される
・それらフォーム部品をハンドリングするためのJavaScriptを動的に?生成する必要がある

みたいな機能の場合、Strutsの採用は向いてるんでしょうか?
それとも他にmore betterなフレームワークあります?
個人的には、いっそOGNL直撃&自前HTMLパーサでやるのも手かなとか感じちゃってます。。。orz
181デフォルトの名無しさん:2005/04/14(木) 15:23:43
彩パンが深夜に喘ぎ声出してるサイト見つけました!
ちょっとやりすぎなんじゃ・・・・
私興奮してきました・・・
http://messages.yahoo.co.jp/bbs?action=m&board=1834595&tid=bclbfbfa4g0l8c0&sid=1834595&mid=26339
182デフォルトの名無しさん:2005/04/14(木) 18:30:01
strutsってDB周辺のライブラリではないですよね。
183177:2005/04/14(木) 19:24:08
>>178>>179ありがとう

つーとStrutsというブランドを引き継いでいるだけで中身は全く別物と
いうわけね。期待できそうだぬ。

CommonsChain、、、あぁまたお勉強ネタが増えちまったよ、ふぅ疲れる。

>>180=>>182

StrutsもShaleもJSFも、RDBMSとは何ら関係ねぇです。
この板で君の知りたい情報を探るならここ

http://pc8.2ch.net/test/read.cgi/tech/1090653286/l50
184デフォルトの名無しさん:2005/04/14(木) 20:51:43
>>180
StrutsはHTTPリクエストのパラメータをBeanに入れてくれるというだけの仕組み。
185デフォルトの名無しさん:2005/04/14(木) 21:13:43
>>180
Strus-Layout は、Strutsに欠けているUI関連を大幅に補完してくれる。
たまにソース読まないと使えないが。
186デフォルトの名無しさん:2005/04/14(木) 21:41:36
>>177
>ShaleもDIになるの?

Springが組み込まれたみたいだね。
http://wiki.apache.org/struts/StrutsShale
187180:2005/04/15(金) 12:19:21
レスくだすった方々、ありがとうございます。
Strutsが何をするものかは理解していたのですが、
目的を実装する手段として、適切に近いかどうかを知りたかったのです。
まずは、Struts-Layoutを調べてみます。
188デフォルトの名無しさん:2005/04/15(金) 13:11:58
>>187
多分同じような業務をしていると思うので一言。
俺はJSTL+JSPで画面回り、
HTTPリクエストはStrutsでbeanに入れて
DBとの通信はHibernate、
全体の管理はSpringでやってる。
>>180みたいなことはサクサクっとできると思う。
189デフォルトの名無しさん:2005/04/16(土) 09:23:51
>>188
だったら全部Springでいいんじゃね?
なぜにStrutsを?
190デフォルトの名無しさん:2005/04/16(土) 15:03:10
>>189
「HTTPリクエストはStrutsでbeanに入れて」
これはSpringをやるのはめんどう。
191デフォルトの名無しさん:2005/04/16(土) 18:17:17
結論:Springは面倒。
192デフォルトの名無しさん:2005/04/16(土) 23:15:19
準備は面倒だけど手間は減る。
193デフォルトの名無しさん:2005/04/17(日) 15:25:20
往々にして、準備の手間の方が減る手間を上回る罠。
194デフォルトの名無しさん:2005/04/17(日) 17:08:12
減る手間のほうはこれからも減りつづけるから。
195188:2005/04/18(月) 13:34:13
>>194
そそ。似たようなサイトは一回作っちゃえば使いまわしできるし
SpringのAOPは意外と優れてる。
AspectJとかに比べるとキビシイのかもしれないけど、
ログインチェックとか、エラー処理とか
普通に使う分にはまったく問題ない。
196デフォルトの名無しさん:2005/04/19(火) 15:08:49
質問です。
<logic:equal value="0" name="option_flg">あり</logic:equal>
<logic:equal value="1" name="option_flg">なし</logic:equal>

option_flgの値をみて、HTMLに『あり』、『なし』の表示をさせたいのですが、
messegeプロパティなどを使って出力させないとだめでしょうか?
現状、値を与えても何も表示されません。
197デフォルトの名無しさん:2005/04/19(火) 16:10:21
ちゃんと値入ってるのかよ?
198196:2005/04/19(火) 16:34:15
>>197さん
すみません。値が入ってませんでした。
めちゃ恥ずかしいです
199デフォルトの名無しさん:2005/04/19(火) 19:21:35
初心者スレでも質問したのですが、再度ここで質問させていただきます。
何か気づくところがあるかt、宜しくお願いします。

http://pc8.2ch.net/test/read.cgi/tech/1112950312/535-536

ActionServletを呼び出し、画面遷移しようとする下記のような例外が
発生します。
どうも、tilesファイルが定義されていないようで、いろいろとWEBと本を
参考にし、同じようにやっているのですが、同じエラーが出てしまいます。

どなたか心当たりある方、ご教授お願いします。

2005-04-18 22:20:44 StandardWrapperValve[action]: サーブレット action のServlet.service()が例外を投げました
java.lang.NullPointerException
at org.apache.struts.tiles.xmlDefinition.FactorySet.getDefinition(FactorySet.java:116)
at org.apache.struts.tiles.definition.ComponentDefinitionsFactoryWrapper.getDefinition(ComponentDefinitionsFactoryWrapper.java:86)
at org.apache.struts.tiles.TilesRequestProcessor.processTilesDefinition(TilesRequestProcessor.java:153)
at org.apache.struts.tiles.TilesRequestProcessor.processForwardConfig(TilesRequestProcessor.java:300)
at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:231)
at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1164)
at org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:397)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:689)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)

ちなみに、Tilesの定義はstruts-config.xmlで下記のように定義し、tiles-defs.xmlとstruts-tiles.tldは
WEB-INFの下においております。

<plug-in className="org.apache.struts.tiles.TilesPlugin">
<set-property property="definitions-config" value="/WEB-INF/tiles-defs.xml" />
<set-property property="moduleAware" value="true" />
<set-property property="definitions-parser-validate" value="true" />
</plug-in>
200デフォルトの名無しさん:2005/04/19(火) 19:22:31
(続き)

ちなみに、Tilesの定義はstruts-config.xmlで下記のように定義し、tiles-defs.xmlとstruts-tiles.tldは
WEB-INFの下においております。

<plug-in className="org.apache.struts.tiles.TilesPlugin">
<set-property property="definitions-config" value="/WEB-INF/tiles-defs.xml" />
<set-property property="moduleAware" value="true" />
<set-property property="definitions-parser-validate" value="true" />
</plug-in>

補足として、ボタンを押して画面遷移しようとするとき、
FormBeanが生成され値が保持され、Actionロジックまでは正常なログが
出ています。やはり、遷移のときの問題のようです。。
201デフォルトの名無しさん:2005/04/19(火) 22:30:09
struts-tilesタグ使うだけならTileのプラグインとか全く不要なわけだけど、それはさておき、
tiles-defs.xmlの中身とか、struts-config.xmlでforward先とかはどうなってるんだ?
何か存在しない先に飛ぼうとか存在しないページを表示しようとかしてない?
202デフォルトの名無しさん:2005/04/19(火) 23:04:14
>>201
さっそく返答ありがとうございます。

■tils-defs.xmlの抜粋
<definition name="tJsp.Common" path="/tJsp/layouts/layout.jsp">
<put name="title" value="TestMainPage" />
<put name="header" value="/tJsp/common/header.jsp" />
<put name="menu" value="/tJsp/common/menu.jsp" />
<put name="body" value="/tjsp/TestMain.jsp" />
</definition>

<definition name="tJsp.Success" extends="tJsp.Common">
<put name="title" value="SuccessPage" />
<put name="body" value="/tJsp/TestSubPage1_a.jsp" />
</definition>

■struts-config.xmlの抜粋
<action path="/hoge1"
type="tAction.Action1"
name="Form1"
parameter="textFieldTest">
<forward name="success" path="tJsp.Success"/>
<forward name="failure" path="/tJsp/TestSubPage1_b.jsp"/>
</action>
203デフォルトの名無しさん:2005/04/19(火) 23:05:18
ログを出力から判断したところ、
Action1クラスの処理終了からtJsp.SuccessのJSPへ遷移する間の
ところで、ぬるぽいんたーExcetptionが発生しているのは
わかっているのですが。。

>struts-tilesタグ使うだけならTileのプラグインとか全く不要なわけだけど

そうなんですか?
tiles-defs.xmlをレイアウト定義ファイルとして使うには、>>200にある、<plug-in>要素に囲まれている部分の記述は必須だと思っておりました。
204デフォルトの名無しさん:2005/04/21(木) 02:11:29
tiles-defs.xml内のJSPのファイル名が正しくないとかじゃない?

そうでなければ、
putタグ内のnameと、JSPファイル内のtiles-insertタグのattribute属性が
合致していないとか。
205デフォルトの名無しさん:2005/04/22(金) 01:22:26
>>204
レスありがとうございます。
いまいちど、実行し確認してみたのですが、パスの指定は間違いがないかと
思います。
ちょっと頭を冷やして、また時間ができたときに対応することにします。
206デフォルトの名無しさん:2005/04/23(土) 11:42:39
strutsって相対パスを出力する事が出来ないのでしょうか?

global-forwardはpathに./hoge.jspとかにすることで相対パスが得られますが、それ以外の部分でこのような記述をするとエラーがでてしまいます。
actionforwardにも相対パスを出力するようなオプションが見あたりませんし、みなさんはどうしてますか?

デフォルトではwebアプリのルートからの絶対パスを返すので
http://localhost:8080/webapp/

のような場合は問題ないですが
http://localhost:8080/~hoge/webapp

のようなときにはActionForwardなどを使って飛んだときに正しくないURLになってしまってうまくいきません。何かいい手はない物ですかねぇ。

ちなみに環境は
tomcat5
struts1.24
apache2(tomcatにリバースプロクシをしている)
207デフォルトの名無しさん:2005/04/23(土) 15:56:26
相対パスはき出さしてわざわざしがらみ作ってどうするんだ。
apacheかtomcatの設定でなんとかできるんじゃないの?
208デフォルトの名無しさん:2005/04/23(土) 16:26:31
>>206
相対パスを使う必要は無い。
コンテキストパスか、コネクタの設定がまずいと思うよ
209デフォルトの名無しさん:2005/04/25(月) 15:23:49
DynaActionFormのプロパティに配列のクラスを指定した場合
<form-bean name="DynaActionForm" type="org.apache.struts.action.DynaActionForm">
<form-property name="id" type="java.lang.Integer[]"/>

いくつ値が入力されているかわからない状態で、このidの値をすべて取得したいのですが、
どのようにしたら良いでしょうか?(Integer[]に格納したい)
210209:2005/04/25(月) 15:41:49
自己レスです。
すみません、解決しました。
211デフォルトの名無しさん:2005/04/25(月) 16:08:02
struts1.2以降に対応したeclipseプラグインってありませんか?
212デフォルトの名無しさん:2005/04/25(月) 16:26:32
NitroXとかどう?
英語だけど、詳しいチュートリアルとか付いてる。
213デフォルトの名無しさん:2005/04/25(月) 21:13:55
>>211
Struts1.2の何に対応して欲しいんだ?
eclipse使っているんだから、Actionクラスが増えたとかなら、struts.jarを入れ替えるだけだろ?
214デフォルトの名無しさん:2005/04/26(火) 17:38:23
Strutsのvalidateチェックで文字数のチェックをしたいのですが、
バイト数単位でチェックをかけてくれるのでしょうか。
HTMLのmaxlengthみたいに全角半角の区別は
してくれないんでしょうか?
215デフォルトの名無しさん:2005/04/26(火) 18:48:46
>>214
> バイト数単位でチェックをかけてくれるのでしょうか。
しない。Validatorのルールを自作する必要がある。

> HTMLのmaxlengthみたいに
これはブラウザ依存だ。ブラウザによってカウントの仕方が違うから注意しろ
216デフォルトの名無しさん:2005/04/27(水) 06:25:17
ブラウザ依存だがHTMLの仕様的には文字数のチェックでバイト数じゃないと思われ
217デフォルトの名無しさん:2005/04/27(水) 14:35:41
HTMLの仕様がどうだろうが、ブラウザによっては仕様を満たしてないから注意しろって琴田。
そんな糞ブラウザなんぞ無視するなら問題ないが。
218デフォルトの名無しさん:2005/04/27(水) 15:22:19
DBがPostgreSQLなのでキニシナイ
219デフォルトの名無しさん:2005/04/27(水) 16:37:39
>>218
Postgresなら桁数は関係ないんですか?
220デフォルトの名無しさん:2005/04/27(水) 17:49:03
保存がCSVなのでキニシナイ
221デフォルトの名無しさん:2005/05/06(金) 10:55:20
MySQLも次のバージョンから関係なくなるんだっけ?
何も考えずにバージョンあげるとひどい目にあうらしいが
222デフォルトの名無しさん:2005/05/06(金) 11:34:36
MySQLは、ごんごん動きが変わってるからね。
223デフォルトの名無しさん:2005/05/07(土) 06:32:08
何の話だ?
224デフォルトの名無しさん:2005/05/07(土) 07:22:18
JR西日本の社員が事故当日セックルしてたのがけしからんという話。
225デフォルトの名無しさん:2005/05/08(日) 12:11:10
藤井隆ごときが乙葉とセックルしてるのがけしからんという話。
226デフォルトの名無しさん:2005/05/09(月) 21:23:10
かなり初歩的な質問かも知れませんが、struts-configの、
actionのinputとか、forwardのpathとかに、
jspを書かずに別なpathを書くのは、どういう意味があるのでしょうか?
会社のソースを見ると、jspを直接書かずに何もしないActionクラスを呼んで
から表示してる場合が結構あるんですが、これの意味が分かりません。

strutsの入門書を何冊か読んでみてるのですが、分かりませんでした。
こういうテクニックみたいなことも書かれている本はないでしょうか?
227デフォルトの名無しさん:2005/05/10(火) 12:26:49
Init.propertiesというメッセージリソースファイルをresourcesフォルダにおき、

PropertyResourceBundle resourceBundle = PropertyResourceBundle.getBundle("Init");
String PARAM1 = resourceBundle.getString("INIT.PARAM1");
にて、リソースファイルのパラメータにアクセスしたいのですが

Caused by: java.util.MissingResourceException: Can't find bundle for base name Init, locale ja_JP
at java.util.ResourceBundle.throwMissingResourceException(Unknown Source)

というエラーメッセージがでてしまいます。
strutsを使わないservletでこの方法を使っていたのですが、strutsでは無理なのでしょうか?
struts-config.xmlに <message-resources parameter="resources.Init">も記述済みです。
228227:2005/05/10(火) 12:41:02
自己レスです。解決しました。
PropertyResourceBundle.getBundle("resources.Init");ですね(^^;
単純ミス・・・

>>226さん
テクニックというか、何もしないActionクラスを経由するのは
意味がないと思うのですが・・・。
229デフォルトの名無しさん:2005/05/10(火) 21:56:06
>>226
フォワードしてるとか、ディスパッチしてるとか?
230デフォルトの名無しさん:2005/05/12(木) 00:50:04
他の板でも聞いたけどStrutsの初心者向けの解説書ってあります?
Java勉強始めたばかりで基礎はあやふやだけど習いました
231デフォルトの名無しさん:2005/05/12(木) 01:57:56
基礎って、webのほうもちゃんとやったのか?
基礎といいつつ文法しか勉強してないなら、代表的なクラスとサーブレット/JSPは勉強してないと。
232230:2005/05/12(木) 22:42:48
サーブレットやJSPは駆け足ながらも一応は習いました。
研修中なんでペースが早くてその上初心者なんで追いつくので精一杯です
233デフォルトの名無しさん:2005/05/13(金) 12:14:04
案件持たされたんじゃなくて、純粋な勉強ならコレとか。
http://www.amazon.co.jp/exec/obidos/ASIN/4798010162/qid=1115953820/sr=1-9/ref=sr_1_10_9/250-6374888-7391467

でもstrutsって簡単に言うといろんな役割のクラスをXMLで繋ぎますってかんじの技術だから
「Webってこう書くもの」とか思っちゃうと、後から大変になるかも。
234232:2005/05/14(土) 01:16:50
レスどうもです。XMLのつなぎ方がごちゃごちゃしてて解りづらくて、
研修はわかんないとこはネットで自分で調べたほうが身につくというわかんない方針なんで
本買ったほうがいいなと思ったんで。
クラスわけと継承が理解しきれてないんでそっちから重点的にやります。
235デフォルトの名無しさん:2005/05/16(月) 15:20:23
Strutsで、可変個の入力項目があるときに、そいつらにバリデーションかけるにはどういう設定が必要ですか?
擬似コードで書けば
class TestForm extends ValidatorForm{
 class sub{
  property String a;
  property String b;
 }

 property String code;
 property sub sublist(int index);
}
みたいな感じで、プロパティsublistが可変長のとき、sublistの中のaとかbとかに入力チェックをかけたいんです。

関係ないけど、プロパティ構文ほしい。
236デフォルトの名無しさん:2005/05/16(月) 15:34:45
>>235
validatorの設定ファイルでindexedListPropertyを使う。
この本に使い方が載ってた。
http://www.amazon.co.jp/exec/obidos/ASIN/4798010162/250-6500245-6213807
237デフォルトの名無しさん:2005/05/16(月) 15:50:42
>>236
ありがd
いまは手元にないけど、その本持ってるので見てみます。
238デフォルトの名無しさん:2005/05/19(木) 12:58:00
>>236
すみません,別の者ですが質問です.
もしかしてStruts1.2版にしか載っていないのでしょうか?
手元に1.1版があるのですが,見つけられないのです.
239デフォルトの名無しさん:2005/05/19(木) 13:13:36
>>238
1.2版のみだね。他にも加筆されていることが多いから買い直してもいいんじゃない?
高い本じゃないし。
240238:2005/05/19(木) 13:17:02
>>239
ありがとうございました.今度書店で見てみます.
241デフォルトの名無しさん:2005/05/19(木) 15:24:08
すみません,indexedListProperty を,フォームビーンに XDoclet で指定するには
どのように記述すれば良いのでしょうか?
242デフォルトの名無しさん:2005/05/24(火) 23:38:53
Strutsが出力するJavaScriptはXHTMLに対応しているかよくわからないのですが、
経験のあるかたいらっしゃいますか?
243デフォルトの名無しさん:2005/05/25(水) 00:58:37
JSPと生成されるHTMLは無関係なので
XHTMLを出したければ自分で書けばいいだけです
Strutsタグは余計な属性もつけないので問題なし
あー、どっかに余計なNameは使うかも。未確認
244デフォルトの名無しさん:2005/05/25(水) 17:44:13

iterateに関して教えてください。
Formのクラスが内部にCollectionを持つとして、
そのCollectionに対して、アクセサをoverloadすると、
<logic:iterate>でそのFormとpropertyを指定すると「getterがない」って
怒られるですけど、overloadはしてはいけないんですかね?

FooForm {
  List list;
  List getList()
  FooBean getList(int i)
}

<logic:iterate name="foo" property="list" type="FooBean">
245デフォルトの名無しさん:2005/05/25(水) 23:51:03
>>244
普通、getterに引数はつくか?
246デフォルトの名無しさん:2005/05/26(木) 10:28:18
Strutsの質問なんですけどいいですか?
QueryRunnerのqueryメソッドやupdateメソッドと
ResultSetのexecuteメソッドやexecuteUpdateメソッドでは
どちらが使いやすいと思いますか?

分からないとかの質問じゃなくて、両方使ってみて、
使いやすいのが前者だな、と俺が思ったわけで、
みなさんはどう考えているのかな、と知りたくなったので。
247デフォルトの名無しさん:2005/05/26(木) 10:37:43
>>246
QueyRunnerってJakarta Commons DbUtilのorg.apache.commons.dbutils.QueryRunnerのこと?
それならスレ違い。こちらへどうぞ。
「【Java】Apache Jakarta Commons」
ttp://pc8.2ch.net/test/read.cgi/tech/1094954163/
248デフォルトの名無しさん:2005/05/26(木) 23:41:20
Strutsの質問など一つもしていないのに、ちゃんと誘導してやる
>>247 はなんて優しい奴なんだろう。
249デフォルトの名無しさん:2005/05/27(金) 09:04:19
それが日本人の和を尊ぶ気質。
漏れは>>247の中に大和魂を見た。
250デフォルトの名無しさん:2005/05/27(金) 12:47:28
×和を尊ぶ気質
○村八分

>247は外人で。
251デフォルトの名無しさん:2005/05/27(金) 22:00:15
>>250
だからやんわり追い出したんだよ。
252デフォルトの名無しさん:2005/05/29(日) 03:22:34
Web開発で今はStrutsが強いけど将来的にはSpringやJSFが有望ってよく言われますが
StrutsとSpringやJSFを比較して技術的な面でそれぞれのメリットとかあるのでしょうか?


またJakartaの本でStrutsでデータベースを扱うとき
トンクーってのがあると書かれてましたが
基本的にStrutsでDBを扱うときトンクーを使うのが一般的なやり方なんでしょうか?
それとも一般の開発などではもっと違うやり方が使われているのでしょうか?
基本的にWeb開発ってDBを使うことが多くなると思いますが…
253デフォルトの名無しさん:2005/05/29(日) 03:28:42
>>252
> StrutsとSpringやJSFを比較して技術的な面でそれぞれのメリットとかあるのでしょうか?

・コントローラコンポーネントをPOJOで作成できる
・UIコンポーネントベースなので、ViewとControllerの責務を明確に分離できる
・UIコンポーネントベースなので、統合開発環境などでUIを作成できる

> Strutsでデータベースを扱うとき トンクーってのがあると書かれてましたが

おそらくどこにもそんなことは書いていないと思います。初耳です。
254デフォルトの名無しさん:2005/05/29(日) 03:43:03
>>253
ありがとうございます

トンクーではなくトルクーでした
2,3年前ぐらいに出た
Jakartaプロジェク徹底攻略って雑誌の中にある
Strtus完全入門のコーナーの中に載っています
255デフォルトの名無しさん:2005/05/29(日) 03:58:06
>>254
StrutsとTorque(トルク)は直接は関係しない。
Torqueはもう開発も止まっているし、O-Rマッピングフレームワークとして
似たようなコンセプトのHibernateが主流になっていくのが今の流れ。
ただし、基幹システムクラスのシステムで運用段階で実際に使われている
かというと、まだまだ少数派だろうね。
256デフォルトの名無しさん:2005/05/29(日) 05:05:42
StrutsとSpringは層が違うから、比較する意味ないね。
むしろ、StrutsとSpringは組み合わせて使う。
Struts+Spring+Hibernateとか、いい感じ。
JSFなんだけど、JSFはWebシステム向けでWebを意識しないように作られているから、逆にWebを意識したい場合には制御がやりにくい部分がある気がする。
257デフォルトの名無しさん:2005/05/29(日) 10:10:17
Curl+Spring+Hibernate
258デフォルトの名無しさん:2005/06/01(水) 11:00:10
Actionクラスのインスタンスって、毎接続ごとに生成されますよね?
259デフォルトの名無しさん:2005/06/01(水) 11:14:07
いいや。
260デフォルトの名無しさん:2005/06/01(水) 11:21:30
>>258
されません。付属のドキュメントぐらい読んでください。
261デフォルトの名無しさん:2005/06/01(水) 11:56:14
そうか、よし、ちょっと読んでくる。
さんきゅう。
262デフォルトの名無しさん:2005/06/01(水) 13:21:41
思いっきり書いてあった。
ふう、危なかったぜ。
263デフォルトの名無しさん:2005/06/01(水) 20:35:10
でも、Springとか使えば、接続ごとにインスタンス化されるようにできる。
264デフォルトの名無しさん:2005/06/02(木) 19:09:33
Struts1.2のワイルドカードマッピングについて質問です。
入力画面→確認画面→完了画面と遷移させる場合に、

確認画面でエラーがあれば、入力画面に戻す。
完了画面でエラーがあれば、確認画面に戻す。
といった動きをさせています。
<action path="確認" type="確認Action">
  <forward name="success" path="確認.jsp"/>
  <forward name="error" path="入力.jsp"/>
</action>
<action path="完了" type="完了Action">
  <forward name="success" path="完了.jsp"/>
  <forward name="error" path="確認.jsp"/>
</action>
と記述しているのですが、この場合ワイルドカードマッピングするメリットは
ないのでしょうか?遷移先が複数あるとベタで書くのと一緒かなと・・・
それか、エラー画面が固定とか。

なんか汎用性がなくてあんまり使えないような。
265デフォルトの名無しさん:2005/06/17(金) 14:40:08
iis + weblogicでstrutsを使ってWebアプリを作っているのですが
初回アクセス時のみURLがrewritingされてjsessionid= が付与されてしまいます。
そうするとiisが○○.doへのアクセスではなく
○○.do;jsessionid=××へのアクセスと判断して
Weblogicにプロキシしてくれなくて404エラーになってしまいます。

struts-config.xmlのforwardタグでredirect="false"にしても、なぜか付与されてしまいます。
この際iisに○○.do;jsessionid= もWeblogicにプロキシしてもらうようにしようかと思ったのですが
アプリケーションのマッピングの拡張子に";"が使えないようで設定方法がわかりません。

jsessionid=××が初回でも付与されないようにするか
jsessionid=××がついていてもコンテナに渡すようにしたいのですが
どうしたらよいでしょう。
ご教授お願いいたします。
266デフォルトの名無しさん:2005/06/18(土) 11:22:26
>>265
weblogic.xmlのURLRewritingEnabledをfalseにすればいいんじゃねーの?
というか、ブラウザでCookieをはじいてない?
267デフォルトの名無しさん:2005/06/18(土) 14:39:32
ブラウザCookie許諾してても、初回はSessionID出るよ。
268デフォルトの名無しさん:2005/06/20(月) 12:11:36
>>266
ありがとうございます。
今回はPCブラウザの他に携帯も使用するので、
Cookieがあってもなくても同じ遷移をするようにしたいのです。
weblogic.xmlにURLRewritingというタグがあるのですか?調べてみます。
ところでURLRewritingをfalseにすると、sessionスコープが使えなくなるんでしょうか。。。?
269268:2005/06/20(月) 15:53:47
WebLogic.xmlに次のタグを加えたところ、jsessionid=なんちゃらというのは出なくなりました。

<session-descriptor>
<session-param>
<param-name>
URLRewritingEnabled
</param-name>
<param-value>
false
</param-value>
</session-param>
</session-descriptor>

で、sessionスコープも実験してみたところ使えるようです。
Cookieを拒否する設定にしてもsessionは維持されていました。
これで、いけそうです。ありがとうございます。

ところで、>>268でも書いたんですが、
Cookieも使わず、jsessionid変数も投げずに、どうやってブラウザからのリクエストをセッションに振り分けてるんでしょうか。。。?
普通に動いている理由がわからない。。。
270デフォルトの名無しさん:2005/06/22(水) 20:22:25
Cookie でもセッション変数でもないなら
HTTP/1.1 の keep-alive をアプリケーションサーバ側が処理してるんじゃね?
271268:2005/06/23(木) 10:20:48
>>270
でもkeep-aliveってのはセッションを維持するというより、TCP/IPの接続を維持するって感じですよね。
APサーバが「さっきと同じHTTP接続だから同じ人だろうから、このセッションでおけ」と判断して
セッション変数を投げているとすれば、
keep-aliveなんていつclose出されるかわからないわけだから
それに頼ってセッションを維持するのは
かなり不安定な設計、ってことなんでしょうか??

うーん、こまった。。。
272デフォルトの名無しさん:2005/06/23(木) 10:37:56
クッキーオフにしてjsessionidもオフにしたら、セッションなんて維持できないだろ
なんか間違ってね?
もう一回テストしてみ
273デフォルトの名無しさん:2005/06/23(木) 11:50:41
>>271
InetSpyなりを仕込んで、本当にCookieが飛んでないかどうか確認してみて。
もし本当にどっちも使ってないのにセッションが継続されてるなら、すごく興味があるから。
274268:2005/06/23(木) 13:40:17
IEのインターネットオプション→プライバシー→詳細設定で自動Cookieを上書きにして
クッキーをブロックするを選択して、Cookieを削除した後IEを再起動。

strutsのActionクラスでStringを一つ持つbeansのインスタンスを作って
そこに"test"とセットしてセッション変数に入れて初期JSP画面表示。
その後リンクボタンで別の画面に遷移。
遷移した画面のJSPタグでセッション変数のStringの変数を取り出す。

そうすると画面に"test"と出てくる。

これってセッションが維持されてるってことですよね。。。
URL Rewritingはオフにしてるし。。。実験の仕方がまずいのかなあ。
275デフォルトの名無しさん:2005/06/23(木) 13:48:05
>>274
実験の仕方がまずいな。
設定を変えたからCookieがオフになっているはず、という思いこみがある。
>>273の言うように、Cookieが本当にオフになっているかどうか、通信内容を見て判断するべきだ。

IE5以降は、イントラネットではクッキーをオフにできないぞ。
その設定は「インターネットゾーン」となっていることには気がついているか?

276デフォルトの名無しさん:2005/06/23(木) 13:50:54
FireFoxならサイトごとにクッキー許可・ブロックの設定できるぞ
お試しあれ
277268:2005/06/23(木) 14:00:58
>>275
>IE5以降は、イントラネットではクッキーをオフにできないぞ。
まじですか。じゃあクッキーが飛んでいるのかも。
テスト環境がXPなんでInetspy入れられない。。。

んー、どうしようか。
せめてクエリー文字列が○○.do?jsessionid=××だったらIISも通るのに。。。
278デフォルトの名無しさん:2005/06/23(木) 14:02:18
>>274
URL Rewritingの動作確認中に同じ症状になったことがあります。
同じように書いても、OperaだとURL Rewritingされて、
IEだとさもクッキーが有効かのように動いてました。

思うんですが、クッキーをブロックしてもファイルとして保存しなくなるだけで
プロセスのメモリ中にはちゃんと作ってるんじゃないんでしょうか?
279268:2005/06/23(木) 14:04:01
>>276
ありがとうございます。火狐ですか。
スレイプの設定でクッキーを無効にしてもセッションを維持できてたもんで
すっかりそういうものだと。。。
280268:2005/06/23(木) 14:14:55
firefoxを入れてlocalhostのクッキーを不許可に設定してテストしたところ

javax.servlet.jsp.JspException: Cannot find bean test in any scope

・・・やっぱり世の中そう甘くはないようです。

例えばhidden内にjsessionidを埋め込む形でも構わないんですが
具体的な書き方がわかりません。
ご教授願えるとありがたいです。
281デフォルトの名無しさん:2005/06/23(木) 14:16:16
自分でセッションIDの生成と管理をするしかなかばい
282デフォルトの名無しさん:2005/06/23(木) 14:16:21
IE5以降なら、ローカル環境でも
http://localhost:8080/〜 ではなくて
http://127.0.0.1:8080/〜 でアクセスすれば
イントラネットゾーンじゃなくてインターネットゾーンの設定が適用される。
283268:2005/06/23(木) 14:24:47
>>282
本当だ。127.0.0.1/〜でテストしたらエラー出ました。
はあ、、こまった。。。
284デフォルトの名無しさん:2005/06/23(木) 14:35:37
1. WebサーバをApacheに変更することを提案
2. Webサーバを使わず、全部Weblogicでやることを提案
3. セッション管理機構を設計、実装
4. あきらめる
285268:2005/06/23(木) 14:54:25
>>284
既に概要設計は終わって承認も出てしまっているので
1と2はムリです。
4はありえないので、3か。。。

http://www.atmarkit.co.jp/fjava/onepoint/weblogic/weblogic02_1.html

こんなのがあったので、コレを試してみて、これもダメだったら自分で、、、できるかなあ。
286268:2005/06/23(木) 14:56:23
一応最後の最後の最終手段として
「IISのアプリケーションマッピングを".*"にする」
という逃げ道も考えてはいます。
でもこれじゃあ何のためにIISはさんでいるのかわからないので
もう少しあがいてみたいです。
287268:2005/06/23(木) 20:23:21
かなり強引ですが、無理矢理解決しましたので報告します。

・一番最初に表示するJSPページの<head>〜</head>の中に
<% session.setAttribute("sessionId",session.getId()); %>
と書く。

・各JSPページのフォームタグの中に
<input type="hidden"
name="JSESSIONID"
value="<%= session.getId () %>"/>
と書く。
これでボタンで画面が遷移されたときにセッションIDが維持される。

・各JSPファイルのリンクタグに
<html:link action="/init?action=Insert"
paramId="JSESSIONID" paramName="sessionId"
>新しいデータを登録する。</html:link>

のように書く。
これでリンクによる画面遷移時にもセッションが維持される。


以上です。
要するにセッション管理というのは「JSESSIONID」という変数を(Servlet2.2に限ってデフォルトで)受け渡しすればよいのだ
ということがわかりました。

勉強になりました。
288デフォルトの名無しさん:2005/06/23(木) 22:40:59
>>287
そのやり方だとコンテナの実装依存になるような気がしないでもないが、
想定した環境で動作し、今後も変更される可能性が低いのなら今回に限り
それで逃げてもいいでしょうね。
289デフォルトの名無しさん:2005/06/23(木) 23:37:33
>>287
URLRewritingEnabledをfalseにして自前でやる意味がよくわからない。
290デフォルトの名無しさん:2005/06/23(木) 23:44:12
>>289
>>265のIIS連携の話から始まってるからじゃね?

こやつのこの調査能力のなさから見て、
そもそも本当にIIS-Weblogic連携でjsessionidが使えないのかどうかも少し怪しいけど…漏れはWeblogic触ったことないからシラネ
291デフォルトの名無しさん:2005/06/23(木) 23:49:38
>>289
265あたりから読み直せばわかる。
292デフォルトの名無しさん:2005/06/23(木) 23:53:15
tomcatの

if( sb.length() > 0 ) { // jsessionid can't be first.
sb.append(";jsessionid=");
sb.append(sessionId);
}

の部分を
sb.append("?jsessionid=");
に変えてみたら?
5.5だとorg.apache.catalina.connector.Response
5.0だとorg.apache.coyote.tomcat5.CoyoteResponse
かな?ちょろっと見ただけだからあってるか不明w
293デフォルトの名無しさん:2005/06/24(金) 12:27:46
>>290
WebLogic触ったことすらない趣味プログラマーにすら怪しまれる>>287ww

>>292
tomcatじゃなくてWebLogicらしいぞ。
294デフォルトの名無しさん:2005/06/29(水) 16:01:00
JBOSSで似た現象の対応をしたことがある。
Tomcat5の場合、CoyoteResponse.isEncodeableでID付加の
判断を行っているが、そのソースを読むと
HttpSessionが作られてなければIDは付加されない。
だから最初のアクセスのときにSessionが作られないように
JSPに<%@ page session="false" %>と書いてやったら解決した
295デフォルトの名無しさん:2005/06/29(水) 17:20:28
>>294
でもそれだとCookie使えない時はどうするの?
296デフォルトの名無しさん:2005/07/15(金) 17:49:51
お聞きしたいことがあります。
validatorについてなんですが、2つの日付の大小関係をチェックしたいと考えています。
条件として、
1.入力欄1に打ち込んだ数字が日付として正しいかをdateでチェックする。
2.入力欄2に打ち込んだ数字が日付として正しいかをdateでチェックする。
3.1と2の条件を満たした場合のみに入力欄1と入力欄2の大小関係をチェックする。
1と2はいいのですが、3をどうすればいいのかが分かりません。
フィールドが2つになると思うので、単純にvalidwhenを使うことができないのですが、何かいい方法は無いでしょうか?
よろしくお願いします。
297デフォルトの名無しさん:2005/07/15(金) 20:15:26
FormBeanのほうに比較用の文字列なり数値なり返すメソッド用意するのはどうか
298デフォルトの名無しさん:2005/08/16(火) 13:36:32
>>296
Validatorのルールを自作する
299デフォルトの名無しさん:2005/08/27(土) 00:44:29
質問させていただきます。

windows上でstruts使って勉強してます。
struts-configにデータソースの設定を書いているのですが、tomcat起動時にエラーが出てしまいます。

■コンソールのエラーメッセージ
致命的: データソース org.apache.struts.action.DATA_SOURCE の初期化
org.apache.commons.dbcp.SQLNestedException: Cannot load JDBC driver class 'org.postgresql.Driver'
at org.apache.commons.dbcp.BasicDataSource.createDataSource(BasicDataSource.java:766)
                  (中略)
Caused by: java.lang.ClassNotFoundException: org.postgresql.Driver
at org.apache.catalina.loader.StandardClassLoader.loadClass(StandardClassLoader.java:854)
                  (以下略)
■struts-configの内容
<data-sources>
<data-source type="org.apache.commons.dbcp.BasicDataSource">
<set-property property="driverClassName" value="org.postgresql.Driver" />
<set-property property="url" value="jdbc:postgresql://localhost:5432/test?useUnicode=true&characterEncoding=Windows-31J" />
<set-property property="username" value="postgres" />
<set-property property="password" value="hogehoge" />
</data-source>
</data-sources>

ぐぐっても同様の質問は見つかりますが解決した例がありません。
tomcatは5.0、strutsは1.2.7です。初心者でよくわからないのですが、
この他に必要な情報があれば、言っていただけると出せると思います。
よろしくおねがいします。
300デフォルトの名無しさん:2005/08/27(土) 00:47:15
>>299
> Caused by: java.lang.ClassNotFoundException: org.postgresql.Driver
原因がズバリ書いてあるじゃないか。
301デフォルトの名無しさん:2005/08/27(土) 00:58:31
>>300
えと、potgresのドライバのjarはビルドパスに入れております。
でもなぜかClassNotFoundException出てるんですよね。
struts1.2からおかしいらしいのですが…
302デフォルトの名無しさん:2005/08/27(土) 01:05:01
>>301
ビルド時のクラスパスに含まれていても、
実行時に有効なクラスパスに含まれていないと意味がない。
そんなこともわからんのか。
Struts以前の問題だな。
303デフォルトの名無しさん:2005/08/27(土) 01:16:01
>>302
えと、実行時に有効なクラスパス、とはなんなのでしょうか?
eclipseではじめたのでそういう事にうとくて…
ちなみにstruts1.1で作った別のものはうまく動いているのですが…
304デフォルトの名無しさん:2005/08/27(土) 01:26:02
>>303
Servletの入門書でも読んで、「デプロイ」とか必要なリソースの配置とか勉強し直せ。
305デフォルトの名無しさん:2005/08/27(土) 01:27:09
/WEB-INF/lib/postgresql-xxx.jar
306デフォルトの名無しさん:2005/08/27(土) 01:29:25
普通JNDI使うもんじゃないの?
そうすると、Tomcatなら${CATALINA_HOME}/common/libあたりにpgXXXX.jarを
置いておくことになるけど。
307デフォルトの名無しさん:2005/08/27(土) 01:36:11
>>305
うーん、/WEB-INF/lib/postgresql-8.0-310.jdbc3.jarってドライバをインポートして、
eclipseでビルドパスに追加・・・ってしているのですが。

>>306
その方法も調べてやってみます。
308デフォルトの名無しさん:2005/08/27(土) 01:40:28
>>306
tomcatの/commons/libにドライバを配置しただけですがあっさり動作しました。

ご回答くださった皆様、ありがとうございました。m(_ _)m
309デフォルトの名無しさん:2005/08/27(土) 06:10:01
っていうか、struts-configにDataSourceの設定を書くのは今のバージョンじゃ非推奨になってると思うけど
素直にTomcatのDBCP設定を使ってInitialContextで取得した方が良いと思う
310デフォルトの名無しさん:2005/08/27(土) 09:46:24
>>309
そのとおりだが、非推奨を真に受けていると、
初期バージョンのほとんどの機能が使えない・・・
311デフォルトの名無しさん:2005/08/28(日) 01:38:08
>>310
DBは非推奨すぎ。
312デフォルトの名無しさん:2005/08/28(日) 03:28:55
勉強なんだからいいじゃんべつに
313デフォルトの名無しさん:2005/08/28(日) 03:50:18
>>312
勉強だからこそ、一番勧められる環境でやるべきだ。
業務なら過去のしがらみとかでぐだぐだ。
314デフォルトの名無しさん:2005/08/29(月) 21:45:52
>>310
>>311

そのあたりの非推奨情報ってどこかにまとまっていませんか?
普通にググルとBeansタグとか使ってる例がいっぱいでてきて疲れる。
315デフォルトの名無しさん:2005/08/29(月) 22:19:11
非推奨APIとかのサイトじゃだめなの?
316デフォルトの名無しさん:2005/08/29(月) 22:20:00
>>314
リリースノート。
317デフォルトの名無しさん:2005/08/29(月) 22:41:51
Beansタグとかは、リリースノートに非推奨と書かれてるわけじゃないだろ?
318デフォルトの名無しさん:2005/08/30(火) 19:33:44
strutsでFORM認証する方法教えて下さい。
ぐぐりましたが方法見つかりませんでした。

web.xmlとtomcatのserver.xmlといじくる方はなんとなくわかるのですが、
struts-config.xmlの記述の方法がよくわかりません。
<action-mappings>の<action>にroles="hoge"を記述する方法が知りたいのです。

どこかページを紹介していただくだけでもかまわないのですが・・・
319デフォルトの名無しさん:2005/08/30(火) 21:11:52
>>318
よくわからん、てどういうこと?

<action path="/Sample" type="net.wings.SampleAction"
name="SampleBean" scope="request" roles="admin,manager">
<forward name="success" path="/sample.jsp" />
</action>

こんな感じでいんでねの?
320デフォルトの名無しさん:2005/08/30(火) 21:51:44
>>319
その場合、web.xmlはどう書けばいいのでしょうか?

あと、struts使わない場合、jspのフォームに
<form method="POST" action="<%= response.encodeURL("j_security_check") %>">
  <input type="text" name="j_username" >
  <input type="password" name="j_password" >
  <input type="submit">
</form>
と書くと思うのですが、これstrutsで書くとそもそもaction="j_security_check"を
どう書き直していいかわからないんですが…
321デフォルトの名無しさん:2005/08/30(火) 23:23:47
>>320
そもそも、そこはStrutsの機能を使うところじゃない。
Servletコンテナに任せる部分だから
Strutsとは関係ない。
Strutsを使ってても使わなくても同じ。
322デフォルトの名無しさん:2005/08/31(水) 13:00:40
>>320
普通にアクションクラスに飛ばして、
そのクラス内でセキュリティチェックすればいいんじゃないの?
323デフォルトの名無しさん:2005/09/08(木) 04:40:47
>>320
まず、認証の方法が幾つかあるので、それを理解して、今回何を使いたいのかを決定させる。

いま、書かれてるのは、Strutsは関係無くて、Tomcatでの認証方法。
でもって、その認証の情報(ロール)をStrutsで利用しようというのが、>>319で書かれた、rolesの部分。
この方法なら、@ITのJavaTipsにでも載ってるから参照してみる。

もう1つはStrutsの中で完全に独立して認証の仕組みが作れる。
これは、Strutsのサンプルとしてwarファイルが用意されている。
Exampleの方ではなくてmailなんとかって方にユーザを登録して、
ログイン、ログオフ、認証などの一連の処理が書かれている。

ただし、このサンプルはXMLでのファイル形式でユーザを管理している。
この部分をDB使った方法にするなどは普通にDB使ってデータの登録とか検索などができるなら、
それほど難しくは無い。
324デフォルトの名無しさん:2005/09/10(土) 10:10:06
requiredifは、依存項目の状態を見て対象項目の必須チェックをしますが、
依存項目の状態を見て、date、e-mailチェックをするしないはできるでしょうか。
メール送信先チェックボックスがチェックされていたら、
必須チェックと、メールアドレスのチェックをしたいのですが、
チェックをしないで不正なemailを書くと、エラーが出てしまいます。
ここを、チェックしていないときは一切チェックを走らせないようにしたいです。
validwhenを使用しても、条件的に無理でした。
325名無しさん@そうだ選挙に行こう:2005/09/10(土) 20:39:38
struts勉強中の者ですが、質問させて下さい。

struts1.2.7のバイナリをダウソロードしてきて解凍しました。
eclipseでTomcatプロジェクトを作って、そこにstruts-blank
のwebapps以下のものを全てインポートしました。

ここからが問題なのですが、まず、そのままブラウザで
アクセスすると、Welcome.doに飛ばされて表示されるのですが、
eclipseでstruts-blankのlib以下のjarファイルを「ビルドパスに追加」
すると、同じurlを入力してもエラーが表示されてしまいます。

エラーの内容は
javax.servlet.ServletException: キー "welcome.title" に対応するメッセージが見つかりません
org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:846)
org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:779)
org.apache.jsp.pages.Welcome_jsp._jspService(Welcome_jsp.java:81)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:94)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
    (以下略)
なのですが・・・。

なぜjarをビルドパスに追加するとエラーになってしまうのでしょうか?
326名無しさん@そうだ選挙に行こう:2005/09/11(日) 13:13:41
MessageResources.propertiesが消え去るから
327デフォルトの名無しさん:2005/09/13(火) 12:43:23
質問させていただきます。Struts初心者です。
ログイン画面の初期表示で、メッセージリソースファイルからタイトル名称を取得して表示させたいのですが以下のエラーになります。

致命的: サーブレット jsp のServlet.service()が例外を投げました
javax.servlet.jsp.JspException: Bean loginForm のプロパティ title に対するゲッターメソッドがありません
at org.apache.struts.taglib.TagUtils.lookup(TagUtils.java:1031)
at org.apache.struts.taglib.bean.WriteTag.doStartTag(WriteTag.java:227)
at org.apache.jsp.WEB_002dINF.jsp.login_jsp._jspx_meth_bean_write_0(org.apache.jsp.WEB_002dINF.jsp.login_jsp:127)
at org.apache.jsp.WEB_002dINF.jsp.login_jsp._jspService(org.apache.jsp.WEB_002dINF.jsp.login_jsp:89)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:322)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:291)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:241)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
(以下略)

■ストラッツ設定ファイル
<form-bean name="loginForm" type="org.apache.struts.action.DynaActionForm">
<form-property name="name" type="java.lang.String"/>
<form-property name="password" type="java.lang.String"/>
<form-property name="sysno" type="java.lang.String"/>
<form-property name="titile" type="java.lang.String"/>
</form-bean>

<action path="/init" type="jp.co.stl_inc.ors.ors_h.action.InitAction"
          name="loginForm" scope="session" validate="false">
<forward name="success" path=".logonLayout" />
</action>
328デフォルトの名無しさん:2005/09/13(火) 12:44:43
(続きです)
■アクションクラス
public class InitAction extends Action {

  public ActionForward execute(
ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response)
throws Exception {

FormBeanConfig config = mapping.getModuleConfig().findFormBeanConfig("loginForm");
DynaActionFormClass
dClass = DynaActionFormClass.createDynaActionFormClass(config);
DynaActionForm dForm =(DynaActionForm)dClass.newInstance();
dForm.set("titile","login.title");
request.setAttribute("loginForm",dForm);

return mapping.findForward("success");
  }
}

■JSP
 <html:form action="/login" >
  <bean:message name="loginForm" property="title" />
 </html:form>

ActionFormを使っていたときはアクションクラスでsetTitlsメソッドを使って設定することで表示されていました。
DynaActionFormにしたところセットされなくなりました。何が原因なのでしょうか?よろしくお願いいたします。
329デフォルトの名無しさん:2005/09/14(水) 00:24:34
>>327
loginFormのtitleのつづりが間違ってる
普通、エラーメッセージからまずそこをチェックすると思うが・・・
330デフォルトの名無しさん:2005/09/14(水) 12:57:43
>>329
ありがとうございます。ご指摘の通りです。修正したらうまくゆきました。
エラーメッセージ、言われてみるとその通りのことを書いてありますね・・・
勝手にDynaActionFormとかの問題だと思い込んでました。申し訳ありません
331デフォルトの名無しさん:2005/09/17(土) 22:54:58
DynaValidatorFormを使用したフォームがあります。

これに、validation.xmlで行っているエラーチェックのほかに
独自のチェックをいくつか追加したいと思っています。
新たに追加するチェックは、validation.xmlに書くのは
ちょっと難しいので、validate()メソッドを自作したいのですが、
この場合、DynaValidatorFormを使うのをやめて
ValidatorFormクラスを作らなければならないのでしょうか。

332デフォルトの名無しさん:2005/09/23(金) 20:29:51
最近 Struts を触り始めました。
どうしてもわからないことがあるので、どなたか教えてください。

Action のプロパティ name で定義する ActionForm (bean) ですが、
Action を中心に捉えた場合、その in 側なのか out 側なのか、
どちらに対して定義しているものなのでしょうか。
in 側のパラメータを JavaBean としてまとめたもののようですが、
foward された jsp で <bean:write> で呼ばれる bean もこれですよね。

何かとんでもない勘違いをしているのでしょうか。
私の今の理解だと、ActionForm には in/out 両方で使うパラメータを
すべて定義しなければならないように思えてしまいます・・・
333デフォルトの名無しさん:2005/09/23(金) 21:37:24
>>332
inもoutも両方定義できる。
というか、Beanにはset/getの両方書くでしょ。

それに、Beanはどこで初期化してもいいんだよ。
大抵のサンプルはxxx.jspからaaa.doのアクション呼び出して、
そこで、引数で渡されたFormをキャストしてActionForm取得してるから、
そういった錯覚に陥るのかもね。

でも、xxx.doでActionFormをnewして初期値とか放り込んで、
xxx.jspを呼び出して、その値を表示させる。
そして、aaa.doを呼んで入力した値を取り出すとかそういった事が可能。
334デフォルトの名無しさん:2005/09/24(土) 14:08:03
入力用と入出力用の値はActionFormにすると思うけど、
出力専用の値の場合でもActionForm作ってますか?
出力用の場合は、POJOでもいいような気が・・・
335デフォルトの名無しさん:2005/09/24(土) 14:53:44
出力専用はPOJOだろ。
ActionFormはあくまで入力用。
336デフォルトの名無しさん:2005/09/24(土) 14:55:36
JSPで<jsp:useBeanタグを書くのが気持ち悪い・・・そのぐらいか
出力専用ならPOJOでも別にいいのではないか
337デフォルトの名無しさん:2005/09/24(土) 16:50:53
>>336
> JSPで<jsp:useBeanタグを書くのが気持ち悪い・・・そのぐらいか
そんなの書く必要ないじゃん。わかってるのか?
338デフォルトの名無しさん:2005/09/24(土) 17:04:55
出力にActionFormを使うのは推奨されない
339デフォルトの名無しさん:2005/09/24(土) 17:07:00
>>338
そうか?
340デフォルトの名無しさん:2005/09/24(土) 17:26:21
StrutsのnestedタグはActionFormの情報をname属性の設定無しに取得してくれるし、
初期値の設定も楽だからActionFormに出力データを入れた方が色々と楽ではあるね。
ただ、このやり方だと、Actionがforward先のJSPのFORMタグと密接につながることになるから
個人的にはあまりお奨めしない。

昔ActionFormに出力データを入れるような手法をとってたプロジェクトに参加してたことあるけど
forward先のJSPのFORMのsubmit先が動的に変わることになって、対応に苦労したことがあるよ
341デフォルトの名無しさん:2005/09/24(土) 19:02:02
>>331
ヒント:Validator 自作
342デフォルトの名無しさん:2005/09/24(土) 19:02:07
出力の場合は、同じActionForm使ってるけどスコープをsessionにしてる
Actionのプロパティはrequestっていうか、session使うと苦労しそう
343デフォルトの名無しさん:2005/09/25(日) 00:59:17
>出力にActionFormを使うのは推奨されない

何が推奨されるの? 最初、オレも出力用のデータオブジェクトは
どうなっているのかと思ったけど、Strutsでは言及していなかった。
編集画面ではActionFormを使うし、リスト表示でも結局データオブジェクト
とかぶる部分が多いので、結局ActionFormあるいはそのリストになった。
小規模なプロジェクトではこれで十分な気がする。

ActionFormって入力フォームのことだと思っていたのだが、VBで言うForm
と同じ概念だとすると、出力に使ってもいいのではと思うのだが。
344デフォルトの名無しさん:2005/09/25(日) 01:14:12
ActionFormはフォームなんだから入力内容をそのまま表示する場合は
出力に使ってもいいけど、そうでない場合は使わないほうがわかりやすい
345デフォルトの名無しさん:2005/09/25(日) 08:31:22
出力に使っても別にいいけど、入力内容を加工するのだけは
いただけないな
346デフォルトの名無しさん:2005/09/25(日) 17:12:24
>>343
構造体的なクラスでもいいし、マップでもいいと思う。
ActionFormクラスを流用しても構わないと思う。
347332:2005/09/25(日) 23:20:01
返信遅くてすみません

やっぱりあんまり言及されてなかったんですね
いくつか書籍とか見てみたんですけど、はぐらかされてるような気がして・・・

基本的には ActionForm は、名前のとおり html の form とほぼイコールの
入力パラメータの処理 bean であって、出力にはあんまり使わない
出力は JavaBeans を作って、session なり request なりのスコープで
jsp 側から使えばいいんじゃないか、と

こういう感じなんでしょうか
348デフォルトの名無しさん:2005/09/25(日) 23:35:41
>>347
だいたいそんな感じでいいんじゃないかな?

話変わるけど、今環境がないから試してないけど
bean;writeタグのpattern属性で日付編集(yyyy/MM/ddみたいなこと)ってできますか?
その場合はDate型かTimestamp型じゃないとNG?
349デフォルトの名無しさん:2005/09/26(月) 00:01:43
>>347
最近はその考え方がほぼ主流といえよう。
350デフォルトの名無しさん:2005/09/26(月) 00:06:31
>>348
ドキュメント見た?
format属性でできるけど、プロパティの型はjava.util.Dateかそのサブクラスに限定。
351デフォルトの名無しさん:2005/09/26(月) 00:17:26
>>350
サンクス
ドキュメント見てなかったです
だいたい感じが分かりました
352デフォルトの名無しさん:2005/09/26(月) 00:29:34
>>351
ちなみに、内部的にはjava.text.SimpleDataFormatを利用しているから、
format属性に指定できるパターンもSimpleDataFormatと同じ。
353デフォルトの名無しさん:2005/09/26(月) 21:24:55
はじめまして。今Strutsを勉強してるものです。
質問があります。ActionFormとActionFormBeanの違いがいまいちわかりません。
ご教授お願いします。
354デフォルトの名無しさん:2005/09/26(月) 22:04:21
>>353
気にするな
355デフォルトの名無しさん:2005/09/26(月) 22:26:09
なんどもすいません。
ActionFormBeanは、ActionFormサーブレットで値を格納し、Actionに値を
投げる役目でActionFormはAction内で継承されるだけ?なんでしょうか?
356デフォルトの名無しさん:2005/09/26(月) 22:46:14
>>355
某サイトから引用

ActionForm クラス
ActionForm はHTMLから送られたデータを、RequestスコープまたはSessionスコープで保持します。
どのスコープで保持されるかはStruts-config.xmlのAction定義に依存します。
ActionForm クラスはフォーム・データの一般的な概念を表すため、これを具現化した ActionFormBean は入力フォームごとに生成することが望まれています。
ActionFormBean では、画面ごとの実際の入力値やそれら入力データの妥当性をチェックする Validate を保持します。
そのため、 ActionFormBean にはフォーム・データの入力値(パラメータ)毎に setPName() と getPName() を用意します。
357デフォルトの名無しさん:2005/09/26(月) 22:58:41
>>353
とりあえず慣れるまでActionFormBeanは忘れるのがお勧め。
358デフォルトの名無しさん:2005/09/26(月) 22:59:48
ActionFormはフォームからの入力値を保持するコンポーネントで、
アプリケーション開発者はorg.apache.struts.action.ActionFormのサブクラスを作成する。

ActionFormBeanはStrutsコンフィギュレーションファイルの<form-bean>要素に設定された
値を保持している、Strutsの内部コンポーネント。通常はアプリケーション開発者が直接
扱うことはない。

org.apache.struts.action.ActionForm
http://struts.apache.org/api/org/apache/struts/action/ActionForm.html

org.apache.struts.action.ActionFormBean
http://struts.apache.org/api/org/apache/struts/action/ActionFormBean.html


359デフォルトの名無しさん:2005/09/26(月) 23:05:22
ありがとうございます。
では、ActionFormは宣言だけで具現化したものがActionFormBeanということになるのでしょうか?
今までは
Action.java   動作を行う場所
ActionForm.java setter、getterがある場所
***.jsp     画面に表示させる。
         Formタグで値をゲット!
struts-config.xml…etc
というのを作っていました。
requestプロセッサでActionFormBeanに値を自動的にセットされ
Actionでその値をget、setなどして動作している?なのでしょうか?
日本語がおかしいところが多々あると思いますが…申し訳ないです。
360デフォルトの名無しさん:2005/09/26(月) 23:08:15
>>359
> では、ActionFormは宣言だけで具現化したものがActionFormBeanということになるのでしょうか?
もういっぺん出直してこい
361デフォルトの名無しさん:2005/09/26(月) 23:33:07
>>359
まあ、便宜上ActionFormを継承したものをActionFormBeanってことだと思えばいいんじゃない?
1つ本を買うなりしてサンプルを作れば分かるよ
362デフォルトの名無しさん:2005/09/26(月) 23:34:51
Strutsって、何でActionFormとActionFormBeanが分かれているんだろう?
一緒にすれば良いのに。
363デフォルトの名無しさん:2005/09/26(月) 23:39:32
でなおしてみました。ごめんなさい。
ActionFormはstruts-configで設定された機能ごとにつけられただけのもので
ActionFormBeanは、ActionForm.javaで作成されたものであって、
サーブレットで勝手にセットされる場所もActionFormBeanだとわかりました。
では、Action.javaで継承されてるのはActionFormBeanなんでしょうか…
364デフォルトの名無しさん:2005/09/26(月) 23:39:52
>>362
橋の真ん中いてそこから根元を鋸で切ったらどうなるんだろう
365デフォルトの名無しさん:2005/09/26(月) 23:50:44
>>363
すまん、どこから手をつけていいものやら、途方に暮れてしまう。
俺はさじを投げさせてもらう。

>>363に2ちゃんの書き込みだけで簡潔に説明し、クリアに理解させる奴がいたら神だ。
366デフォルトの名無しさん:2005/09/26(月) 23:53:28
>>362
どこからそんな発想が?
機能も役割も使われ方も何もかも違うものをなぜ一緒に?

>>361
デタラメ教えるんじゃない。
367デフォルトの名無しさん:2005/09/27(火) 00:04:28
なんとなくわかりました。
今までものすごい勘違いをしていたようです。
ActionFormBeanがsetter、getter、validatorの設定をするところで
ActonFormが、struts-configのなかでBeanに名前をつけて
引数としてActionにわたされるもの。
ではないでしょうか…
このようになったのですが…
368デフォルトの名無しさん:2005/09/27(火) 00:13:02
>>367
全然違う。まだまだものすごい勘違いをしているようです。
369368:2005/09/27(火) 00:16:30
否定するだけではただの煽りなので・・・
ActionFormBeanは、Struts設定ファイルの設定情報を保持している、フレームワークの内部コンポーネント。
ActionFormBeanはStrutsが内部的に使用するのみで、君が直接使うことはまず無いと考えていい。

ActonFormは、君がサブクラスを作成して、プロパティとアクセッサメソッドを実装する。
フォームからサブミットされた情報を持つコンポーネント。
Actionクラスのexecute()メソッドの引数に渡されるのはこっち。
君が作成するActionクラスやJSPページ上で自由に使っていい。
370デフォルトの名無しさん:2005/09/27(火) 00:47:27
ありがとうございます。
Struts-config.xmlなどで設定された情報を保持している物、フレームワークの
内部コンポーネントが、ActionFormBean。
「値」自体がいろんな動きをするのがActionFormということになるのでしょうか…
また、間違っているかもしれませんがお願いします。
371デフォルトの名無しさん:2005/09/27(火) 20:23:44 0
すみません。昨日に引き続きまた疑問が出ました。
リクエストプロセッサについてご教授ください。

自分で調べたこと
・アクションサーブレットが、Httpリクエストを受け取り、処理すべきモジュールの判断し、該当のモージュールのコントローラーであるリクエストプロセッサが呼び出される
・モジュール設定ファイルを起動時に読み込む。
・アクションフォームビーンにHttpリクエストの値を保持させる。
・アクションを呼び出す
・アクションからアクションフォワード(mapping)を返してもらい、JSPの作成を行う。
・JSPの作成の際、コンストラクタから値を参照したりもする

こんな感じでよろしいのでしょうか?
372デフォルトの名無しさん:2005/09/27(火) 21:34:47 ID:0
373デフォルトの名無しさん:2005/09/27(火) 21:42:12 ID:0
もしかしてstrutsって超激難しくね?
374デフォルトの名無しさん:2005/09/27(火) 21:44:44 ID:0
むずかしいというよりめんどくさい
StrutsもJSFもダメダメ
375デフォルトの名無しさん:2005/09/27(火) 22:08:14 ID:0
だれかわかる人いませんでしょうか?
もしいたら、ご教授お願いします。
ageます…申し訳ない…
376デフォルトの名無しさん:2005/09/28(水) 02:25:36
>>373
Strutsは、サーブレットに毛が生えた程度として考えればそんなに難しくないんだけど
>>371みたいな内部的な動きを気にすると難しい気になる。
はっきりいって、最初は内部的な動き気にする必要はない。

あと、解説本が難しく書きすぎ。
377デフォルトの名無しさん:2005/09/28(水) 09:57:28
こんにちは。質問させてください。
struts1.2を使用して検索フォームを作っています。
検索アクションで検索フォームの値を受け取り、検索結果ページを表示させるのですが、
その結果ページのURLに検索条件を入れたいです。

requestやsessionスコープに登録された値からではなく、
URL直打ちからの検索ができるようなイメージです。
検索フォームからフォームの値がsubmitされたときはフォームの値を使って検索(検索表示ページのURLに検索条件が含まれている)し、
リクエストパラメータがある場合は、そこから検索条件を解析し、検索するというものです。
非常にわかりにくい文章ですいません。
どなたかわかるかたがいらっしゃいましたらご教授お願いします。
378デフォルトの名無しさん:2005/09/28(水) 10:36:39
URL直打ちから、request→formに値が渡されるってことは分かって言ってるのか?
379368:2005/09/28(水) 12:08:29
>URLに検索条件を入れたいです。
入れればいいじゃん
380デフォルトの名無しさん:2005/09/29(木) 18:47:11
>>376
ベタにhtmlを書くと
<form method="get" action="/hoge.do">
 <input type="test" name="search">
</form>
んな感じで、フォームにayayaって入れて検索ボタンを押すと
ブラウザにはhttp://hogehoge.com/hoge.do?search=ayayaって残る
METHODをGETにする。

actionクラスのexecuteメソッドは引数にHttpServletRequest reqがあるので、
String foo = req.getParameter("search");
で、searchの内容が取れる。fooには"ayaya"が入ってる。
そゆこと。
381デフォルトの名無しさん:2005/10/10(月) 12:54:43
すいません教えてください
入力画面でボタンを押したときのAction内でエラーになったとき
汎用のエラー画面ではなくって、
入力画面に「これこれこういうエラーが出ました」と普通の入力エラーと同じように表示させたいのですが
どのようにすればいいんでしょうか
前のページに戻るにはmapping.forwardで遷移先を追加すればいいと思うのですが
ActionErrors errors=new ActionErrors();
errrors.add(・・・・);
↑このerrorsをどこに設定というかsetすればよいのか分かりません

382368:2005/10/10(月) 13:10:10
>>381
ActionErrorsは現在のバージョンでは非推奨。
ActionMessagesを使う。使い方はActionErrorsとほぼ同じ。

Actionのexeceute()メソッド中の処理だったら、
org.apache.struts.Actionクラスに用意されている
saveMessages(request, actionMessages)を呼べばよい。
383デフォルトの名無しさん:2005/10/10(月) 13:16:36
先生↓じゃ画面に何も出てきません。
<input type="test" name="search">
384デフォルトの名無しさん:2005/10/10(月) 13:27:33
>>382
なるほど、そうやっておけば
<errorタグ>に表示されるのですね
ありがとうございます
385デフォルトの名無しさん:2005/10/10(月) 21:45:18
Strutsが出力するJavaScriptって糞じゃねえ?
関係ない関数までごそっと全部入っちゃうし、
ちょっと複雑なMASKを書いたり、validwhenを使ったら、
そこでコンパイルエラーとかなるし。

これって実用性あるの?
386デフォルトの名無しさん:2005/10/10(月) 21:56:14
>>385
それはおまえさんが糞なだけだ。

> 関係ない関数までごそっと全部入っちゃうし、
はデフォルトのままで使う奴が糞。staticJavascript="false"とか知らないだろ?

> ちょっと複雑なMASKを書いたり、validwhenを使ったら、
> そこでコンパイルエラーとかなるし。
は[CDATA[]]書いてないかエスケープが不十分なだけ。
387デフォルトの名無しさん:2005/10/10(月) 22:03:26
こうみえて優しい386がお伝えしました。
388デフォルトの名無しさん:2005/10/11(火) 00:16:53
すぁんくす、優しい386さん。
「おまえさんが糞なだけだ。」って言うじゃない。

でも回答になっていません。
staticJavascript="false"とやれば、確かに膨大なJavascriptは付いて来ないが、
代わりに、validateRequiredとかvalidateMaskとかの関数が使えなくなる。

それから、よく見てみたらvalidwhenのjavascriptって存在していないじゃん。
残念、やはりすとらっつは糞、斬り!
389デフォルトの名無しさん:2005/10/11(火) 10:21:55
386じゃないが・・
>それから、よく見てみたらvalidwhenのjavascriptって存在していないじゃん。
関係ないな。日本語大丈夫?

>代わりに、validateRequiredとかvalidateMaskとかの関数が使えなくなる。
適当なJSPに
<html:javascript dynamicJavascript="false" staticJavascript="true" />
な感じでstaticJavaScripだけを出力しておいて他のページからそれを参照しろ。
口答えする前にやることあるだろうがこの蛆虫が!
390デフォルトの名無しさん:2005/10/11(火) 11:53:57
> 代わりに、validateRequiredとかvalidateMaskとかの関数が使えなくなる。

頭悪い人ってかわいそうですね。
391デフォルトの名無しさん:2005/10/11(火) 12:16:24
>>389
何が関係なんだよ。糞ガキ。
レス見て、言ったわけじゃねえんだよ、ボケ。
392デフォルトの名無しさん:2005/10/11(火) 12:42:24
頭が悪いくせに偉そうな奴は死ぬべき
393デフォルトの名無しさん:2005/10/11(火) 13:31:46
お前の方が偉そうだよ。
自分のことを頭がいいと考えている可哀想なやつ。
394デフォルトの名無しさん:2005/10/11(火) 14:26:18
>>389
失礼しました。
staticJavaScripの方はそれでうまく行きました。
ありがとうございます。

ところで、validwhenのjavascriptはどうなりますか?
395デフォルトの名無しさん:2005/10/11(火) 14:30:59
>>394
>validwhenのjavascriptはどうなりますか?
urlやvalidwhenにははじめっから無いよ。
「JavaScriptが用意されているべき・用意されていなければならない」って
思いこんでないかい?
396デフォルトの名無しさん:2005/10/11(火) 14:50:25
397sage:2005/10/11(火) 20:10:52
それが売りだと思っていたんだけど。
将来的にも実装される予定なし?
398デフォルトの名無しさん:2005/10/12(水) 00:05:24
実装して、Contributeするのだ!w
399380:2005/10/14(金) 22:26:08
失礼しましたw

<input type="text" name="search">

ですたw
要はフツーのサーブレットのように
HttpServletRequestから入力フォームとか(GETなら)URL直打ちのを
strutsでも取り出せる、という事で。
400ハーピィ:2005/10/15(土) 01:57:58
E・∇・ヨノシ <400ゲット♫
401デフォルトの名無しさん:2005/10/15(土) 08:40:09
ヨカッタな
402デフォルトの名無しさん:2005/10/26(水) 13:37:27
教えてください。
数値専用のテキストボックスをJSPで表示し、
それを受け取るActionFormに、Integer型のプロパティを用意しました。

ユーザーからの入力値を、未入力と0を区別して扱いたいです。
Integer型のプロパティを用意すれば、未入力の時にnullで、
0を入力した時は0をあらわすIntegerオブジェクトが格納されるかと思いました。
ところが、未入力でも0が格納されてしまいます。
未入力と0の区別をするには、Stringで定義するしかないのでしょうか?
403デフォルトの名無しさん:2005/10/26(水) 13:52:59
>>402
> 未入力と0の区別をするには、Stringで定義するしかないのでしょうか?

そのとおり。元々リクエストパラメータは文字列で飛んでくるわけで、
そういう意味でもjava.lang.String型で扱っておいた方が何かと良い。
データモデルとして数値型や日付型で扱いたい場合は、アプリケーション側で
ActionForm→データモデルに変換するときに型変換するのがおすすめ。

JSFでは「コンバータ」という機能で入出力は文字列、データモデルは好きな型、
という仕組みになっている。
404402:2005/10/26(水) 14:32:24
>>403
うーんそうなんですかぁ。
せっかく変換できているのに、未入力を扱いたいがために、Stringにしなければいけないのは
なんだかもったいない気がします。日付型は書式が多様だから、Stringでも仕方ない気もしますが。

全部Stringにするんだったら、HttpServletRequest使っているのと、大差ない気がするんですけど。。。
(DynaActionFormも。)
405デフォルトの名無しさん:2005/10/26(水) 15:28:01
RequestProcessorのprocessPopulateあたりを上書きすればいいんじゃない?
と思ったがその後のバリデーションとかでぬるぽ吐きそうだな。
まあだったらアクションに入る直前に好きなマッピングに変えればいいしマジオススメ。
406デフォルトの名無しさん:2005/10/26(水) 16:27:43
>404
業務で絶対に使用されない値(-1)を未入力値として定義して、
reset() の中で毎度その値でリセットする策はどうですか?
407デフォルトの名無しさん:2005/10/26(水) 16:50:10
>>406
「未入力=パラメータが飛んでこない」ならそれでもいいけど、
テキストボックス等の場合はパラメータ値として""が飛んでくるので、結局0が入れられてしまうよ。
408402:2005/10/26(水) 19:21:31
特定値を未入力とみなすというのはアリですが、>>407のいうとおり、
checkboxとはちがって、パラメータが届くのでだめでした。
やるとしたら、>>405の方法を試してみます。
409momomo:2005/10/26(水) 22:05:04
strutsでページの制御をしたいんですけど。。。
DBから100件とって1ページに10けんづつみたいな。。。
logicのlengthとoffsetでやりたいのに
offset=""のなかにbean:writeつかうとえらーになるのは
なぜですか???
410デフォルトの名無しさん:2005/10/26(水) 22:25:34
> offset=""のなかにbean:writeつかうとえらーになるのは
> なぜですか???

Struts以前にTaglibの勉強汁
411デフォルトの名無しさん:2005/10/27(木) 09:54:05
>408
出来たら報告よろ
412デフォルトの名無しさん:2005/10/27(木) 09:54:45
>409
ルーク、ELを使え
413デフォルトの名無しさん:2005/10/27(木) 13:14:16
RequestProcesserのprocessPopulateをオーバーライドで、本来の処理をsuperで呼び出してから、
リクエストパラメータが””だったらnullを再設定したところ、
希望したとおりにプロパティがnullのままActionが呼び出されます。

validtorで、requiredを指定しても、プロパティがIntegerの場合には、0になってしまうため、
サーバーサイドのチェックでは、入力エラーにならなかったのが、
チェックでひっかかるようになりました。これはうれしい。

intRangeで範囲チェックすると、ぬるぽになるかと思ったのですが、
nullを設定すると、チェックボックスのように、送信されてこないのと同じ扱いになるらしく
チェックすらされませんでした。
414402:2005/10/27(木) 13:15:20
期待した動作になったのはいいのですが、RequestProcesserを取り替える方法は、
他のRequestProcesserに変更したい場合などに影響がでるので、
Actionの呼び出し前か、Actionのexecuteの先頭で、処理したほうがいいのかなと思いました。

あと、RequestProcesserで、汎用的に""⇒nullの処理を行う方法が分かりませんでした。
BeansUtilsを使ってnullを設定する方法はないんでしょうか?
だめならリフレクションを使って実装するしかないのかな。
415デフォルトの名無しさん:2005/10/27(木) 19:45:31
>>414
BeanUtils使うなら、独自コンバーターを作って対応するって方法でいけるかも?
ttp://www.javable.jp/notes/java/beanutils_02.html
BigDecimalを使用して未入力ならnullって変換はしたことあるけど、
なんだか面倒になって結局全部FormはString型で定義しちゃったけどね
copyPropertyメソッドでformからDTOまたはEntityにコピーするときに使うのは便利だった
416402:2005/10/27(木) 23:49:26
>>415
BeanUtilsにコンバーターを設定できるなんて知りませんでした。
StrutsでもBeanUtilsでActionFormを使っているので、これを使えば、RequestProcesserをカスタマイズしなくても、
BeanUtilsに独自のコンバーターをregistするだけでOKですね。
(でも他でBeanUtils使っている箇所があると、思わぬ影響がありそう?)

ということで、PlugInで起動時に、独自コンバータを組み込む方法にしてみました。
RequestProcesserを使うよりも、疎結合な点はいいと思いました。
417402:2005/10/27(木) 23:51:51
作ったPlugInjはこんな感じです。
public class MyPlugIn implements PlugIn {
  public void destroy() {}
  public void init(ActionServlet servlet, ModuleConfig config) throws ServletException {
    ConvertUtils.register(new MyConverter(), Integer.class);
  }
  private class MyConverter implements Converter{
    public Object convert(Class type, Object value) {
      if (value == null){
        return null;
      } else if (value instanceof Number){
        return new Integer(((Number)value).intValue());
      } else {
        String s = value.toString();
        if (s.length() == 0){
          return null;
        } else {
          return new Integer(value.toString());
        }
      }
    }
  }
}
ひとまず、これで目的は達せられました。色々とアドバイスありがとうございました。
418デフォルトの名無しさん:2005/10/27(木) 23:55:12
>>416
>でも他でBeanUtils使っている箇所があると、思わぬ影響がありそう?
それがコワイ。すごくコワイ。
419415:2005/10/28(金) 00:06:13
>>416
えーとこれも読んだ?
BeanUtils で独自コンバーターを使用する場合の落とし穴
ttp://www.javable.jp/notes/java/beanutils_03.html
register後使ったらderegisterメソッドで初期に戻す
420デフォルトの名無しさん:2005/10/28(金) 00:43:54
>>419
読んでなかったです。。。じゃあやっぱりRequestProcesserを使って、
・ConvertUtils#register
・ActionFormの生成
・ConvertUtils#deregister
って感じになるのか。
421デフォルトの名無しさん:2005/10/28(金) 01:09:20
>>420
今ソースないから確認できないけどRequestProcesserのどこかでBeanUtils.populate(ActionForm, Map)
使ってるところがあったと思うけど、その前後で使用するのがいいのかもね〜試してないからなんとも言えない
自分はBeanUtilsBean.copyPropertiesでしか使わなかったからね
フォームのプロパティのタイプをIntegerにするメリットがあまり思い浮かばないところではあるけど・・・
強いていえばbean:writeタグでpatternで金額が使えるくらい?(JSTLで代用が効きそう)
まあ、頑張ってくれ
422デフォルトの名無しさん:2005/10/29(土) 10:23:29
>>421
BeanUtils.populate(ActionForm, Map)って
親のフィールドまで値を持ってきますが、これは仕様どおりでしょうか
423デフォルトの名無しさん:2005/10/29(土) 10:29:31
strutsのどの処理よりも画面制御のチェックをしたいので、
filterを使用してこんな感じで実装しているのですが
問題ないでしょうか。

String sessionToken = (String)httpRequest.getSession().getAttribute("org.apache.struts.action.TOKEN");
String requestToken = (String)httpRequest.getParameter("org.apache.struts.taglib.html.TOKEN");

if (sessionToken == null || sessionToken.equals(requestToken) == false ) {
httpResponse.sendRedirect(redirectUrl);
return;
}
424デフォルトの名無しさん:2005/10/31(月) 14:26:18
Strutsで作成したWebアプリで、
FORM内容を送信した後、内容をアプリ側でチェックし、エラーだったら
元の画面に戻して、テキストフィールドやセレクトボックスの内容も元の選択した内容に
戻すという処理をするには、どの辺のサイトが参考になりますか?
425デフォルトの名無しさん:2005/10/31(月) 14:49:02
それがStrutsの主な役目だからStrutsを扱ってるどのサイトでも。
よほどヒドイところじゃなければ。
426デフォルトの名無しさん:2005/11/01(火) 21:04:54
質問させて下さい。

strutsで表形式のデータの入力をしようと思ってます。
一件のデータが user_id と user_name で、これに応じたクラスuserを作りました。

ActionFormでは
フィールド
 List data = new ArrayList();
メソッド
 getData( int idx ){
  while( data.size() <= idx ){
   data.add( new User() );
  }
  
  return data.get( idx );
 }
 setData( User user)
 getAllData()

のような感じにしてます。
で、表形式のデータにしてvalidateメソッドをかけたいわけですが、引数のHttpServletRequest
からどのようにデータを取得すればいいでしょうか?

通常なら、textのnameをキーにするわけでしょうけども… 
427426:2005/11/01(火) 21:47:23
自己解決しました。失礼しました。
428デフォルトの名無しさん:2005/11/02(水) 19:17:18
>>426
後学のため、やり方を教えて下さい。
429デフォルトの名無しさん:2005/11/02(水) 23:54:51
ExceptionHandler内で、forwardはできないのでしょうか。
430デフォルトの名無しさん:2005/11/03(木) 00:53:00
無理。1つのjspないで処理分けれ
431デフォルトの名無しさん:2005/11/12(土) 02:54:26
すいません、質問です。
最近仕事が暇なので、空いた時間でフレームワークのソースを読んでみようかと思うのですが、
オススメのフレームワークはなんでしょう?
ちなみにこれまで暇なときは、友人の進めでCOMMONSのソースを読んでました。
432デフォルトの名無しさん:2005/11/14(月) 22:30:16
すみません。
strutsについて質問させてください
<bean:write name="A" property="number">
でnumberを表示出来るのですが、表示させる際に
number = 111333ならば
111-333の様に区切りを入れたいのですがどうしたら宜しいでしょうか?
Beanにはデータベースから値を取得してセットしていますので
<bean:write name="A" property="number">
で取り出してから、3桁区切りをしたいです。宜しくお願いいたします。
433デフォルトの名無しさん:2005/11/14(月) 23:37:28
>>432
そのBeanにgetNumberString()とか作って、
そこで整形した方がいいんじゃない?

111,333とかだったら、format="###,###"でいけると思うけど。
434デフォルトの名無しさん:2005/11/15(火) 11:36:09
validation.xmlを多人数で開発するいい方法ないかしら
ファイル分けても誰かがミスってるとコンテナ起動しないし
435デフォルトの名無しさん:2005/11/15(火) 11:53:09
>>434
XDoclet
436デフォルトの名無しさん:2005/11/15(火) 13:05:45
ちっとも解決してないw
437デフォルトの名無しさん:2005/11/15(火) 13:14:51
ミスは減るだろww
438デフォルトの名無しさん:2005/11/15(火) 13:19:16
確かに基本的なミスは減るが、
それはまともなXMLエディタでも使えば達成できるからな。
nameがダブったりとかは防げないし。

唯一の解決法は、チームの全員に"CVSに上げる前にいっぺん動かして見ろチンカスが"
という通達を徹底することではないでしょうか。
439デフォルトの名無しさん:2005/11/15(火) 19:35:32
validator.xmlは1人で担当するとか
エクセルマクロでなんとかなりそうだけど
440デフォルトの名無しさん:2005/11/17(木) 19:38:12
質問です。
たぶん>>426と似ていると思うのですが、配列データを収めるFormのvalidateの仕方です。

public class Hoge{
 private int id;
 private String name;

 //以下セッターとゲッター
}


public class HogeForm extends ActionForm{

 private List hoge;

 (中略)

 public ActionErrors validate(ActionMapping mapping, HttpServletRequest req){
  (???)
 }

}

配列データはjsp内でイテレートで回しています。offsetかけているので一部順不同です。
出力されたhtmlを見てみると、<input type="text" name="aaa[1].id" value="1"/>
こうなっているのでvalidateメソッド内でreq.getParameter("aaa[1].id")としてやれば
取り出す事はできるのですが・・・この先どうすればいいでしょうか?
441デフォルトの名無しさん:2005/11/17(木) 21:13:31
>>440
この先なにをしたいんだ?
442デフォルトの名無しさん:2005/11/17(木) 23:06:05
>>441

全ての配列でvalidateを。ついでにerror出たら表の右の方にerror表示を。
443デフォルトの名無しさん:2005/11/18(金) 10:56:11
>>442
そのやりたいことの中で、お前ができない、上手くいかないいのは何なの?
取り出すことはできたんだろ?
444デフォルトの名無しさん:2005/11/18(金) 17:20:37
ValidatorのintegerやintRangeはスペースだけの
入力の場合はエラーとされないのでしょうか?
445デフォルトの名無しさん:2005/11/19(土) 17:25:57
validwhenて、空文字チェックや特定の値が入ってるかのチェック出来ないんでしょうか。
446デフォルトの名無しさん:2005/11/20(日) 20:22:30
>>443
取り出すときに req.getParameter("aaa[" + i + "].id") で配列を取り出すとして、
いちいちfor文で回してたらものすごく処理が無駄な気がするのと、validateに引っかかった場合、挙動がわかりません。
447デフォルトの名無しさん:2005/11/21(月) 11:02:00
>446
私はそんな場合はListの中身もValidatorFormかValidatorActionFormにしてます。
(ListはlazyListをつかってる)
さすればfor文でまわさなくてもエラーメッセージを出力することが出来ると思うけど、
>440のやりたいことはむずかしいか・・・
448worm:2005/11/22(火) 12:04:44
 こんにちは。パラメーターのことで教えてください。Actionクラスからjspに
遷移するときのパラメーター文字列の乗せ方が、どうしてもわかりません。

 掲示板を自作しています。掲示板は用途毎に複数存在しており、パラメーター
文字列で使用する掲示板を指定して表示を分けたいと思っています。

 例えば
  bbs.jsp?tbl=free
 でフリートークの掲示板を表示する設計です。

 掲示板の書き込みを行うなどでActionクラスへ遷移した後、Actionクラスから
再びbbs.jspを呼び出す際に、遷移先urlに対してパラメーター文字列を付加する
ことは可能なのでしょうか?ユーザーがブックマークしやすいように配慮したい
のです。

 ご存じの方、おられましたらどうか宜しくお願いしますm(_ _)m。
449worm:2005/11/22(火) 12:53:35
 色々試しているのですが、パラメーター文字列とか以前に、遷移してもurlが
Actionクラス名のままなんですね。困ったな…。
450デフォルトの名無しさん:2005/11/22(火) 13:44:19
遷移と言っているが、Action→JSPは、
HTTPのリクエストが発生しているわけではないから(フォワード)
ブラウザから見たら、1回のHTTPリクエスト。URLは変わらない。

struts-configの、ActionForwardにredirect=trueとすれば、
そのパスに、リダイレクトされるようになってURLもいい感じに変わるかと。
でも、再度HTTPリクエストすることになる。
無駄な処理だけど、URLを気にするんならしょうがないかと。
451デフォルトの名無しさん:2005/11/22(火) 14:28:59
悪いこといわないからservletから勉強しなおせ
452worm:2005/11/22(火) 16:04:37
>450

 ありがとうございます。redirect設定が有ったのですね。ケースバイケースで
使ってゆきたいと思います。ありがとうございます。「遷移」、「forward」の
言葉は正しく使うようにいたします。

 色々悩んだ結果、以下の処理で、意図した形には出来ました。

・このページを呼ぶ前のActionクラスの最後で
  request.setAttribute("tag",user.getTag());

・forward後、掲示板ページのトップで以下の記述
  <logic:present name='tag'>
   <logic:redirect forward='bbs' paramId='tag' paramName='tag' />
  </logic:present>

 もしもrequestに「tag」が有れば、パラメーターを付けて自身を呼び直す、
という事をやっています。
 まどろっこしい気もするのですが、ひとまず解決のご報告で。
453デフォルトの名無しさん:2005/11/23(水) 00:39:29
>446 わかってるとは思うが、一回ぐらいServlet APIのJavadoc嫁
454デフォルトの名無しさん:2005/11/24(木) 21:33:15
最近strutsをいじってるんですが
良さそうな部分もあるとは思うけど、結構微妙なものな気がします。

少しズレた話題かもしれませんが、オープンソースのフレームワークで、認証やアクセス制限の機能が標準で備わっているものってあるのでしょうか?
strutsにその辺期待してたら見事にすかされたみたいです。

とりあえずtomcatのFORM認証も使ってみたんですが、どうも細かい制御や判定がが入れられなくて、自分で実装したほうがマシな感じでした。

出来ればHttpServletRequest.isUserInRole()を使いたいんですが、tomcatで認証させない場合は
filterとHttpServletRequestWrapper通して使うくらいしかないのかな?

455デフォルトの名無しさん:2005/11/24(木) 21:58:48
ずれてるかもしれないけど
org.apache.struts.action.RequestProcessorクラスの
processRolesメソッドが近いのかな?
456455:2005/11/24(木) 22:03:12
言葉足らずだった・・・
org.apache.struts.action.RequestProcessorを継承してprocessRolesをオーバーライド
457デフォルトの名無しさん:2005/11/24(木) 22:44:41
>>456
org が orz に見えた。
458デフォルトの名無しさん:2005/11/25(金) 00:04:28
>>456
なるほど。

でもこれだと、ActionServletが呼ばれた時しか認証チェックされないかな?
ディレクトリ単位で制御したいって時はfilterになるのかなぁ・・・
459デフォルトの名無しさん:2005/11/25(金) 00:26:34
>>458
というかこれはstrutsの問題じゃないですね。申し訳ない。

(しかし、tomcatとかのform認証はj_security_checkに飛ばす以外で認証完了する方法はないのでしょうか?
適当にソースおっかけたらorg.apache.catalinaの方まで処理がいってたから、tomcatの方をいじらないとだめなのかな。
とはいえ条件増やそうと思ったら結局自分で処理を実装するしかないか・・・)
460デフォルトの名無しさん:2005/11/25(金) 14:05:23
サーバでJSPからHTMLを生成してクライアントに送る時の、
その生成したHTMLソースを知りたいのですがどうやったら取得できますか?

いきなりの質問でわるいんですけど誰か答えてもらえませんか?
461デフォルトの名無しさん:2005/11/25(金) 14:13:29
>>460
ブラウザで右クリック
462デフォルトの名無しさん:2005/11/25(金) 14:19:10
>>461
えと、サーバ側で取得する必要があってクライアントにいってからでは遅いです。
遅くは無いけど右クリック禁止にされてます。
折角答えてくださったのに言葉たらずだったせいで申し訳ないです。
463デフォルトの名無しさん:2005/11/25(金) 14:23:57
ほんと不毛な質問だな・・
横取り丸とかjmeterでも入れて、スレタイを1024回読み上げた後に氏ね。
464デフォルトの名無しさん:2005/11/25(金) 14:24:07
>>462
じゃあFilter使ってHttpServletResponseをラップして取得
465デフォルトの名無しさん:2005/11/25(金) 15:16:11
>>462
IE以外でソースをみる。
466デフォルトの名無しさん:2005/11/25(金) 15:40:40
>>462
JavaScriptを無効にしる。
467デフォルトの名無しさん:2005/11/25(金) 16:29:17
HttpServletResponseのどのオブジェクトに入ってるか判りませんでした。
JSPのコンパイルした結果みたいなのは入ってました。
Filterはurl-patternでjspを指定しました。
468デフォルトの名無しさん:2005/11/25(金) 16:39:53
ごめ、取れてたw
469デフォルトの名無しさん:2005/11/25(金) 16:43:18
>>464
ありがとう。
素直にFilterでやればよかったんだな。
processPreprocessを新たに定義して横取りしようとしてたんだけど、
Filterで取るほうがよっぽど楽だったよ。
470デフォルトの名無しさん:2005/11/30(水) 03:32:13
ttp://www.theserverside.com/news/thread.tss?thread_id=37794
StrutsにWebWorkが取り込まれるんだってさ
471デフォルトの名無しさん:2005/11/30(水) 05:56:52
「no one is leaving WebWork」をみて、WebWorkから誰もいなくなっちゃうんだ、と思った俺は英語負け組ですが、なにか?
472デフォルトの名無しさん:2005/11/30(水) 22:37:15
JSPでtableの中に記述されている文字列をアクションフォームに
送りたいのですが、単純に<td>abc</td>とか書くと、もちろん
送られません。
今はhiddenタグを使って二重に文字列を書いてるんですが、
量が多くなるとサーバからの転送量も気になるので、1回書く
だけでよい方法が知りたいです。
<div>タグとか使ってもうまくいきませんでした。
初歩的質問だと思いますが、お願いします。
473デフォルトの名無しさん:2005/11/30(水) 22:44:01
hiddenタグがhtml:hiddenじゃなく普通のhiddenならスレ違い。
その程度の転送量が気になるのも別の問題あり。
474デフォルトの名無しさん:2005/11/30(水) 22:56:05
html:hiddenタグのwrite属性でいけるんじゃない?
そもそも入力項目じゃないならsessionで保持した方がいんじゃないか?
475デフォルトの名無しさん:2005/11/30(水) 23:01:45
>>474
それってhiddenなのに表示できる方法があるってことですか。
予想外でした。調べてみます。
sessionで保持するというのも調べてみます。
ありがとうございました。
476デフォルトの名無しさん:2005/12/01(木) 00:59:36
今のプロジェクトにアサインされて最近struts触り始めました。
いまいちお作法がわからないので質問させてください

今のプロジェクトの作り方としては
たとえば登録処理を呼ぶにしても登録完了画面を表示するアクションにかいてあって
入力画面JSP→登録完了画面表示(&登録処理)アクション→完了画面JSP
の順で処理していきます。

登録完了画面表示(&登録処理)アクションでは

validateで登録チェックを行う

executeで登録のビジネスロジックを呼ぶ

完了画面JSP表示
という感じです

登録処理と表示処理は別アクションて考えてたもんなので
なので↓のようになるべきなのでは?と思っていますが

入力画面JSP→登録処理アクション→登録完了画面表示アクション→完了画面JSP

間違ってますでしょうか?

遷移先の表示アクションでバリデーションやビジネスロジック呼び出しが行われるのには違和感ありどぇす
477デフォルトの名無しさん:2005/12/01(木) 02:25:16
>>476
私は後者だとオーバーヘッドが増えるだけでメリットが無いように感じます。
あと、今まで書籍なりWebなり、または他人のコードを見てきたなかで、
後者のような例を見た記憶はちょっとありません。
478デフォルトの名無しさん:2005/12/01(木) 07:14:23
登録処理アクションを使用するのが複数あるならそれでもいいと思うけど
無いなら分ける必要はないと思われ
479デフォルトの名無しさん:2005/12/01(木) 14:02:45
>>476
Strutsは分からないけど、PRGパターンが近いのかな。

Enterprise Java Community: Redirect After Post
ttp://www.theserverside.com/articles/article.tss?l=RedirectAfterPost

私は、表示処理のみを分ける手法にも一理あると思います。
480デフォルトの名無しさん:2005/12/01(木) 20:51:40
うちは割とPRGで作ってますが。
481デフォルトの名無しさん:2005/12/02(金) 03:01:16
>>479-480
Post Redirect Getの略なのか・・・。
知らずにこのパターンでやってたよw

更新処理の時には役に立つね。
482デフォルトの名無しさん:2005/12/04(日) 05:27:53
画面A → (Action1) → 画面B → (Action2) → 画面C

という画面フローで、
画面Bの入力欄の初期値を、Action1で設定したいのですが、
画面BのActionForm(Action2のIN)のプロパティの初期値を
Action1で設定することはできるのでしょうか?
ActionFormのインスタンスは、どのタイミングで生成されるのでしょう?
483デフォルトの名無しさん:2005/12/04(日) 06:15:30
Action1とAction2のnameに同じActionFormを設定しておけば、executeのActionFormに渡されてくるはず。
484デフォルトの名無しさん:2005/12/04(日) 17:23:45
<スコープ>.setAttribute("<画面Bで定義しているform名>", 画面Bの使用ActionForm);
485482:2005/12/04(日) 22:03:22
レスありがとうございます。


>>483
Action1と2でActionFormを共有すれば確かに出来るのですが、
それだとまずい理由がありまして。
画面Aからは別な画面へも遷移します。(画面A→画面D→画面E)
ActionFormを共有すると、画面A、B、Dが同じActionFormになるわけですが、
画面Bと画面DはValidationの内容が違うので、共有できないのです。


>>484
Action1でActionFormのインスタンスを自分で生成して初期値をセットしておいて、
教えて頂いた形でsetAttributeすれば良いということですね?
486デフォルトの名無しさん:2005/12/05(月) 00:12:12
Strutsにクロスサイトスクリプティングの脆弱性が発見されました。
http://wiki.apache.org/struts/StrutsXssVulnerability
http://www.hacktics.com/AdvStrutsNov05.html

対策バージョンの1.2.8がリリースされています。
487デフォルトの名無しさん:2005/12/05(月) 01:09:54
>>485
>>484の方法が確実だとは思うけど

> ActionFormを共有すると、画面A、B、Dが同じActionFormになるわけですが、
> 画面Bと画面DはValidationの内容が違うので、共有できないのです。
ValidatorActionFormを使って、画面毎にvalidation.xmlの定義を使い分ければ?
488485:2005/12/06(火) 01:04:29
>>487

ありがとうございます。
パス毎に定義できる方法のことでしょうか?
調べていてそれに気付いたのですが、業務フレームワークの制限で、
自由に作れないため、出来ませんでした。
489デフォルトの名無しさん:2005/12/16(金) 20:07:32
application.properties行進して反映するのに再デプロイって・・・・それどうよ
490デフォルトの名無しさん:2005/12/16(金) 21:20:11
行進
491デフォルトの名無しさん:2005/12/28(水) 10:25:00
ValidatorFormでパラメーターをセットし終わった後に処理をしたいのですが、
reset()メソッドしか用意されていないのですね
492デフォルトの名無しさん:2005/12/28(水) 19:38:46
resetメソッドだけで十分かと思うけど
493デフォルトの名無しさん:2005/12/28(水) 20:23:04
reset()はパラメータをセットする前に呼ばれるメソッドだろ
494デフォルトの名無しさん:2005/12/28(水) 20:29:32
ああ、ボケてた、スマソ
RequestProcessorのprocessPopulateをオーバーライドくらいか
495デフォルトの名無しさん:2005/12/29(木) 11:56:02
>491
ValidatorFormでパラメータをセットし終わった後というのは、POSTされてきたときの話と解釈した上で以下

1)パラメータセットの後の処理はValidateなので、ValidatorFormを継承したクラスを使用し、
 validateメソッドのなかで、対象の処理をコールするロジックを加え、super.validate()を実行する。

2)strutsのRequestProcesser.process()の、processPopulate();をコールした後に手を入れ、
 「おれはstrutsのコアをいじれるんだぜ」と鼻高々になり、みんなに叩かれる。

3)Formのsetterにごりごり実装する。

4)そもそも何をしたいのかスレの住人にさらす。


すきなものをおえらびくださお
496495:2005/12/29(木) 12:28:38
>494のやりかたが一番ですな。
processerてstruts-configに設定できるのか。知らんかった。
497デフォルトの名無しさん:2005/12/29(木) 21:07:56
結局、>>491がパラメータを設定した後何したいかだな
全Formが対象ならなら>>494>>495の1)あたりか
ある特定のFormなら>>495の1)って感じかな
498デフォルトの名無しさん:2005/12/31(土) 01:36:34
基本的なことかも知れませんが、手元にある本には書いてなかったので教えてください。

(1)
ActionFormに定義できるプロパティはStringだけなのでしょうか?
intとかIntegerなどはできませんか?

(2)
画面に表示する場合、property="xxx.yyy" みたいな書き方が出来るようですが、
画面から入力する場合も、同じようにproperty="xxx.yyy と書いて、
form.getXxx().setYyy() が呼ばれてセットされたりしないのでしょうか?
試しにやってみたら出来たのですが、本には表示のことしか書いてないので、
これが正しい使い方かどうか自信がないのです。

499デフォルトの名無しさん:2005/12/31(土) 04:32:59
>>498
1)問題なし, DynaActionFormで定義できるクラスは問題なし
2)セットされる、そういう使い方をする場合もある
500498:2005/12/31(土) 04:53:23
>>499

ありがとうございます。
すっきりしました。
501デフォルトの名無しさん:2006/01/05(木) 12:23:08
>>498
なんか変な本だな。
ActionFormの主な役割は入力値の取得のはずだが。
502デフォルトの名無しさん:2006/01/05(木) 17:14:47
filter内の処理で、strutsのActionMappingオブジェクトを取得する方法はあるでしょうか。
リスエスとに保存されているのかと思いrequest.getAttributeNames()でリストを検索したのですが
見つからなかったです。
filterの処理で、actionMappingのparametarを取得できないでしょうか。
503デフォルトの名無しさん:2006/01/05(木) 17:26:12
>>502
あるわけねぇだろ。
Filterがリクエストを処理するのは、フレームワークに処理が移る前だってことぐらいわかってんのかよ?
504デフォルトの名無しさん:2006/01/05(木) 19:19:32
>>503
説明不足でした。
filterはstrutsの処理の前ってことはわかっています。
filter内でstrutsのリソースにアクセスしたいだけです。

webコンテナ初期化

srtuts初期化

webアクセス

filterでstrutsのリソースにアクセス。
*filterの初期化ではstrutsのリソースは必要ないです。

strutsのリソースは、アプリケーションスコープなどになかったので、
requestProsesserをカスタマイズして、
struts初期時にリソースをアプリケーションスコープに登録し
filterで参照する、などができるのかと考えていました。
505デフォルトの名無しさん:2006/01/05(木) 19:57:09
ModuleConfigさえあれば、strutsの情報がいろいろ取れそうなので、
RequestProcessorをオーバーライドして、moduleConfigをどこかのスコープに登録し
filterで参照するのはどうでしょうか
506デフォルトの名無しさん:2006/01/05(木) 20:14:44
>strutsのリソースは、アプリケーションスコープなどになかったので
あるよ。
例えばデフォルトモジュールは、org.apache.struts.Globals.MODULE_KEY をキーにいsて
アプリケーションスコープに入っている。
>>505 はムダ。
507デフォルトの名無しさん:2006/01/06(金) 17:24:46
>>506
情報を取得できました。
ありがとうございます。
ログインしていないときの不正アクセスの遷移先をactionマッピングに記述していたので
filterからデータを取得して、リダイレクトできるようになりました。
508デフォルトの名無しさん:2006/01/06(金) 19:27:11
validateの入力チェックで、
フィールドがlistの時もエラーチェックは可能でしょうか。
エラー内容は全て同じです。
listはcommonsのlazyListを使用し、動的に生成しています。
509デフォルトの名無しさん:2006/01/06(金) 22:15:05
>>508
できるよ。公式ドキュメントにサンプルもあるから参考に汁。
510デフォルトの名無しさん:2006/01/10(火) 10:43:51
strutsのupload機能を使用しています。
strutsの処理ではないと思うのですが、
選択されたファイルのフルパス(クライアント側)を取得することはできるでしょうか。
uploadの画面遷移で
 ファイル選択画面→確認画面→アップロード実行画面
が要求されており、
さらに、確認画面からファイル選択画面に戻る処理があり
ファイルを選択されている状態を復元しなければなりません。
ヒストリーバックは使用してはいけないよう要求されており、
どうしてよいかわからなくなりました。
511デフォルトの名無しさん:2006/01/10(火) 10:59:17
ファイルを選択されている状態を復元は無理。
ブラウザの仕様。
512デフォルトの名無しさん:2006/01/10(火) 11:05:30
>>511
ありがとうございます。
ヒストリーバックでも無理でした。
513デフォルトの名無しさん:2006/01/10(火) 14:23:04
>>509
indexedListPropertys でできました。
但し、10項目あって3〜10項目に入力エラーがある場合、
4〜10項目のエラー処理が走りません。
10項目全てのエラー処理が、depends的な扱いになっているようです(見た感じで言っています)。
全項目をエラーチェックするように設定できるでしょうか。
514デフォルトの名無しさん:2006/01/10(火) 16:47:58
>>510
アップロードするファイルのパスをサーバ側で設定できてしまったら、
それは重大にセキュリティホールになるってわかってる?
515デフォルトの名無しさん:2006/01/10(火) 16:49:44
>>513
自己レスですが、下のサイトに上記は仕様との事が載っておりました。
自作メソッドを作るしかなさそうです・・・
516デフォルトの名無しさん:2006/01/10(火) 16:50:23
>>514
としかに。ごもっともです・・・・
517デフォルトの名無しさん:2006/01/11(水) 01:06:03
Validateメソッドにチェック処理を実装しようと思うのですが、
validation.xmlに定義した内容でチェックされるときに実行されている、
Struts標準のAPIを使えないのでしょうか?
例えば、メールアドレスのチェックなどが使えればかなり実装が楽だと思うのですが。
518デフォルトの名無しさん:2006/01/11(水) 01:29:02
>>516
選択されたファイルの、クライアント側でのフルパス(ファイルシステム上のパス)は取得できますよ。
ただし、IEかFirefoxのどちらかができて、どちらかはできない、という話だったと思います。
519デフォルトの名無しさん:2006/01/11(水) 07:16:54
>>517
使えるよ。
・・・っていうか、使えばいいじゃん。何を聞きたいのかよくわからん。
StrutsのソースやCommons ValidatorのAPIドキュメント見ればすぐにわかる。
520デフォルトの名無しさん:2006/01/11(水) 14:57:15
strutsのファイルアップロード機能で、
htmlの同じform内に、textとfile部品を含め
enctype="multipart/form-data"でサブミットしているのですが、
textのデータがなくなってしまいます。
enctype="multipart/form-data"でファイルアップロードするときは
入力データは送信できないのでしょうか。
521デフォルトの名無しさん:2006/01/12(木) 11:41:21
>>520
MultipartRequestWrapper
522デフォルトの名無しさん:2006/01/12(木) 20:09:15
>>521
filterで処理しましてできました。
ただ一回処理するとストリームが空になり、
servletでパラメーターが取れなくなります。
523デフォルトの名無しさん:2006/01/13(金) 18:36:20
JSPを表示するアクションを起動したら
突如途中までしか表示できなくなった…
そのアクションは1回前に表示できたのだが

どうしよう…アドバイスおながいしまつ
524デフォルトの名無しさん:2006/01/13(金) 19:01:08
ログ見れ
525デフォルトの名無しさん:2006/01/13(金) 19:17:02
kwsk
526デフォルトの名無しさん:2006/01/14(土) 15:27:11
ActionでDBアクセスロジックを呼び出し、そのDBからの取得結果のオブジェクトをJSPで
出力しているのですが、JSPが生成したHTMLをキャッシュして、それをレスポンスとして
返す方法はあるでしょうか?

Action内で結果のオブジェクトをキャッシュすることはできますが、オブジェクト
キャッシュではなく、ページキャッシュ(?)をするのが希望です。

宜しくお願いします。
527デフォルトの名無しさん:2006/01/15(日) 02:44:51
>>526
それは単純にJavaとかServletの機能ではないとおもう
キャッシュサーバ使うのが一番だろうけど、望みのことがしたいのであれば
javax.servlet.ServletResponseWrapperで出力を横取りして
キャッシュ(DBでも自前のロジックでも良いけど)に入れればいい

528デフォルトの名無しさん:2006/01/15(日) 03:33:51
>>523
autoflushをfalseにして、bufferに十分大きい値をとってやれば解決するかも

<%@page buffer="32kb" autoflush="false"%>
とか、

何も指定しないと buffer="8kb" autoflush="true" なので、
生成されたHTMLが8kbを超えると勝手にブラウザに出力を始めてしまう。
529デフォルトの名無しさん:2006/01/16(月) 11:30:58
validationの仕組みで、チェックメソッドのリターンは、次の検証ルールを実行するかの判断と思ったので
Errorオブジェクトをセットして、エラーなし(true)でリターンしたら
エラーありと判定され次の検証ルールに移行できなかったです。
エラーオブジェクトと戻り値で判断しているのですね・・・
530デフォルトの名無しさん:2006/01/17(火) 10:34:28
再表示した時に
前回検索した結果のリストが表示してしまいます
再表示したときに前回の結果を表示させないようにするには
どうしたら良いの?


大ハマリして大苦戦してるので
アドバイスおながいしまつ
531デフォルトの名無しさん:2006/01/17(火) 11:56:12
再表示ってどういう風に再表示よ?
再POST/GETなのか、ヒストリバック(ブラウザの戻る、Javascriptのhistory.back())なのかで対応違う
532デフォルトの名無しさん:2006/02/01(水) 17:15:56
struts各クラスのログをコンソールに出力ためには、どのような設定をすればよいのでしょうか。
533デフォルトの名無しさん:2006/02/03(金) 11:19:00
仕事でしょうがなく勉強してるけど
Strutsタグがゴミすぎるので使いたくないな
534デフォルトの名無しさん:2006/02/03(金) 11:29:36
>>533
Velocityはどうよ?
535デフォルトの名無しさん:2006/02/03(金) 11:52:27
まあ別に嫌ならrewriteとjavascript以外全部捨てても困らないわけだが。
536533:2006/02/03(金) 11:56:47
>>534
見てみましたがこれはすごくいいかも。
もうちょっと調べてみて使うかどうか検討します。
Strutsの<html:xxxx>タグではデザイナーとの協業は難しそう。
537デフォルトの名無しさん:2006/02/03(金) 15:20:25
>536
Velocityは筋はいいけど、まともに使うなら自分でソースいじらないと使いにくいと思う。
そういうことできないなら慎重にしたほうがいいとおも
538デフォルトの名無しさん:2006/02/03(金) 15:21:25
うちはもうデザイナーにはHTMLだけ書いてもらって、それに当てはめる形にしてる
協業形態にもよるが、いろいろとデザイナーにやらせるのは無理
539デフォルトの名無しさん:2006/02/15(水) 09:53:06
ウェブコンテナを再デプロイせずにstruts設定ファイルを更新する方法で、
ActionServletのdestroy、initを呼び出すと初期化できました(まぁ当然ですが)。
これはかなり危険でしょうか?
540デフォルトの名無しさん:2006/02/16(木) 00:12:37
<html:link>のタグで、複数の動的パラメータを送りたいのですが、
動的パラメータは、一つしか設定できないみたいです。

複数の動的パラメータを送る方法として
Mapオブジェクトを使う方法というのがあったのですが、いまいち使い方がわかりません。

複数の動的パラメータをひとつの動的パラメータとして連結して送るってのは邪道ですか?
541デフォルトの名無しさん:2006/02/16(木) 00:35:53
>動的パラメータは、一つしか設定できないみたいです。

そんなことはない

>複数の動的パラメータを送る方法として
>Mapオブジェクトを使う方法というのがあったのですが

と自分で言っているように、おまいさんがわかってないだけ

>複数の動的パラメータをひとつの動的パラメータとして連結して送るってのは邪道ですか?

そんなことはない
542デフォルトの名無しさん:2006/02/16(木) 10:38:17
Mapのキーにパラメータの名前を、値にパラメータの値を入れる。
543デフォルトの名無しさん:2006/02/16(木) 13:52:54
以前あったreload.doに相当する機能はなくなったようですが、
他の手段があるのでしょうか?
544デフォルトの名無しさん:2006/02/17(金) 12:26:18
>>543
コンテナによっては再ロード機能があるんじゃないかしら?
Tomcatなら「Tomcat Webアプリケーションマネージャ」で
[コマンド]-[再ロード]とか。
545デフォルトの名無しさん:2006/02/17(金) 15:41:28
>>544
コンテナの再ロードは、セッションなどが破棄されると思うけど、
reload.doも同じなのかな?
546デフォルトの名無しさん:2006/02/17(金) 15:53:03
Tomcatだとセッションをシリアライズして Session.ser に保管してくれるから
サーバ立ち上げなおしてもセッション維持してくれるよ
547デフォルトの名無しさん:2006/02/20(月) 17:38:26
ありえねー。
socketをTomcatごとき一介のアプリが一体どうやって保持するんだ。
548デフォルトの名無しさん:2006/02/20(月) 17:48:06
そんな深い層でセッション維持はできねーよ
セッションIDだ
549デフォルトの名無しさん:2006/02/20(月) 22:15:17
>>546の言っているのは、HttpSessionオブジェクトだろ
>>545が言っているのが、そのつもりかは知らんが、ファイルの読み直しのためだけに、
再ロードするのも大げさだとは思う
550デフォルトの名無しさん:2006/02/22(水) 11:55:07
Actionの中にはロジックを書くべきではないとよく聞きますが、
どこまではActionに書いてもいいのでしょうか。
パラメーターのチェック等は、今Actionで行っています。
551デフォルトの名無しさん:2006/02/22(水) 12:33:37
>>550
パラメータのチェックならValidatorフレームワーク使おうよ。
552デフォルトの名無しさん:2006/02/22(水) 13:07:24
>>550
階層化構造なんて意識しなくていいよ。
共通できる部分場あればその実装を書けばよし。
553デフォルトの名無しさん:2006/02/22(水) 17:33:46
<html:form>タグ内に<% String a = "aaa"; %>を書いて、
</html:form>タグ後に<%= a %>をしたら、シンボルが解決できませんになりました。
これは使用でしょうか?
554デフォルトの名無しさん:2006/02/22(水) 17:39:28
っ[スコープ]
555デフォルトの名無しさん:2006/02/22(水) 18:29:08
>>554
formの中と外で、スコープが異なるのでしょうか。
jsp内だったら全てpageスコープと思っていました。
556デフォルトの名無しさん:2006/02/22(水) 18:51:07
>>555
PageContextにsetAttributeされたものが、pageスコープ
557デフォルトの名無しさん:2006/02/22(水) 19:32:18
>>550
人、現場によって見解が違うからこれというのは無いけど
フレームワークに依存する部分はロジック層まで降ろさないほうがいいんじゃないかとは思う
558デフォルトの名無しさん:2006/02/22(水) 21:01:06
>>557
ありがとうございます。
ビジネスロジック層には、requestやsessionは渡さないほうがいいのでしょうか。
559デフォルトの名無しさん:2006/02/23(木) 00:06:41
>>558
時間があればロジック層に渡すためのPOJOみたいなのを作って
そこにrequest・sessionで必要な値、オブジェクトを設定すればいいと思うけど
そういう処理を書くのが面倒ならそのまま渡してもいいんじゃないかな?
560デフォルトの名無しさん:2006/02/23(木) 00:51:41
>>559
POJO<−>ActionForm間の値のやりとりはBeanUtils使えばいいのでは?
561デフォルトの名無しさん:2006/02/23(木) 09:48:47
>>560
型安全性の低下とリフレクションの遅さに耐えられるなら、ね・・・・
562デフォルトの名無しさん:2006/02/23(木) 10:26:59
リフレクションは言うほど遅いと思わないけど
型安全性の低下はかなり深刻。
563デフォルトの名無しさん:2006/02/23(木) 10:38:04
>>560
POJOって普通のJavaBeanなのですか?
意味合いがいまいちわからないです。
564デフォルトの名無しさん:2006/02/23(木) 10:45:07
validateでチェックメソッドを追加して、
DBアクセスをし、IDの重複があるかのチェックをしています。
この処理は、validateでやるべきなのでしょうか、
それともビジネスロジックでやるべきでしょうか?
565デフォルトの名無しさん:2006/02/23(木) 10:47:33
>>564
セマンティック検証はビジネスロジック
566デフォルトの名無しさん:2006/02/23(木) 15:25:46
>>565
ありがとうございます。
エラー表示するときは、ActionMessagesはActionクラスで処理しべきでしょうか。
それともビジネスロジックでしょうか。
567デフォルトの名無しさん:2006/02/23(木) 15:52:20
>>566
ビジネスロジック層にStruts APIを持ち込むなよ
568デフォルトの名無しさん:2006/02/23(木) 16:18:49
すいません。質問があります。
Dynaformbeanを使用していますが、JSPのELでDynaformbeanを使用すると
プロパティが見つけられずエラーになります。
今はBeanMapでかぶせたので問題なく動いていますが、
DynaformbeanのままでELま無理でしょうか?
569デフォルトの名無しさん:2006/02/23(木) 19:55:25
jspのforwardタグはglobalしか取得できないのでしょうか。
直前に実行されたactionのforwardを取得する方法はないでしょうか。
570デフォルトの名無しさん:2006/02/24(金) 08:24:59
「要するに、「問題の複雑さ」をJavaのコードからXMLファイルに切り出しただけで、
本質的な難しさは解消されていなかったということです。」

「Strutsなんてないほうがよかった。Strutsのせいで2,3年が失われてしまった。」

ttp://www.programmers-paradise.com/tdiary/?date=20060221#p0
571デフォルトの名無しさん:2006/02/24(金) 10:34:53
DIとかxdocletにも同じことを言えるけどね。
572デフォルトの名無しさん:2006/02/24(金) 11:29:34
>>569
自己解決です。
requestURIを取得して、ActionMappingクラスから取得できました。
ActionMappingはアプリケーションスコープからモジュールを取り出して
何とか引っ張ってきました。
573デフォルトの名無しさん:2006/02/24(金) 11:31:12
>>570
つーか、HTMLの仕様がばかげているんだよ。
こんな理いろいろ要求されているのに、
コネクションレスでのやり取りは無理だ。
根本的にHTMLの仕様の問題!
574デフォルトの名無しさん:2006/02/24(金) 11:33:14
2.0ではフィルターが対応されるんだ。
楽になりそうだな・・
575デフォルトの名無しさん:2006/02/24(金) 11:36:10
なんの2.0だ
576デフォルトの名無しさん:2006/02/24(金) 11:53:32
>>573
HTTPではなくって?
577デフォルトの名無しさん:2006/02/24(金) 14:33:51
>>576
いえす
578デフォルトの名無しさん:2006/02/24(金) 16:15:54
>570
そこの元記事もコメント書いてる人も全部ズレてる気がしてならんよ。
設定外出し自体がなんで罪になるのかさっぱり理解できない。

俺は573氏の意見に賛同する。
複雑さを隠そうといろいろあがいた結果、より醜くなっていく。
View を Web でやるって発想がもう間違ってるんだよ。
579デフォルトの名無しさん:2006/02/24(金) 16:49:14
>>578
同意だ。
580デフォルトの名無しさん:2006/02/24(金) 17:22:43
VIEWにJSP、JSP+EL、JFS、velocityだったらどっちを選びます?
おいらはvelocity!!!
581デフォルトの名無しさん:2006/02/24(金) 17:58:49
Jsp2.0で十分
それ以上複雑してもメリットは見出せないし、デザイナとの連携が取りにくい。
582デフォルトの名無しさん:2006/02/24(金) 18:33:35
>>581
べつにそこまでデザイナー優先にしなくてもいいじゃん。
アプリ側が大変になるんだったら意味ないだろ?ちゃんと考えてんの。
そーゆーのおおすぎ。
583デフォルトの名無しさん:2006/02/24(金) 18:35:20
>>582
なぜデザイナに覚えろ、対応しろっていえないの。
デザイナ優先にしてあげたら、デザイナの仕事は一瞬にして終わるぜ。
俺が社長なら即講習会を開かせる。
584デフォルトの名無しさん:2006/02/24(金) 18:42:36
ビューの技術ごときでアプリが大変になるなら、
それこそちゃんと考えて設計してないだろう

Jsp2.0で十分というのも、そもそもカスタムタグ+ELを使ってても
構造が複雑になる画面ってのは、めったにない。
ロジックと比べて切り出すべきコンポーネントも数えられる程度で、
あえて構造化するメリットは見出せん。
というか重い>velocity
585デフォルトの名無しさん:2006/02/24(金) 19:11:11
おれはきれいに設計するなんて考えは毛頭ない。
工数が掛からない設計をする。
バククソ言われても。
リクエストやらセッションやら何でもかんでも、どこでも持っていく。
最近のSE、費用があって開発するってもを忘れてる。
趣味じゃないのに。
リフレクション・MAPだってバリバリ使いまくりさ。
ActionFormもDB層まで持っていくし、
そのformの中にMapもたせて何でも持っている。
ただ、仕様変更で困ったことはもちろんない。
パフォーマンスは求められないが。
586デフォルトの名無しさん:2006/02/24(金) 19:21:29
WEBアプリがどうこういうよりHTMLが嫌いだ
587デフォルトの名無しさん:2006/02/24(金) 23:09:07
>>585
だいたいきれいな設計すると工数がかからない。
俺も一度Mapバリバリ使ってる独自フレームワークのプロジェクトに参加したけど、
フレームワーク作った人はいいかもしれんけど、他の人がデバッグする時にはさぁ、さぁ、大変。
工数を考えるなら、自分の受け持ちの分だけじゃなく、プロジェクト全体や他の人の費用も
考えてくれ。


588デフォルトの名無しさん:2006/02/24(金) 23:15:24
>>585
まぁ、Mapやリフレクション使うなとは言わない。ただ、バランス良く考えてくれ。
で、例のプロジェクトで、何でもかんでもフレームワークがMapにデータをつっこんでいるから、
コンパイル時の型チェックは効かなくて、そりゃ、結合テスト時に、各開発者でエラー発生しまくり。
で、エラー修正するには、障害票切ったりなんだり、余計手間も増える。
トータルで見るとどっちがいいんだか。

589デフォルトの名無しさん:2006/02/24(金) 23:20:16
実際のところPRGパターンと画面とビジネスロジックの遷移だけのシンプルなやつだけでいいんだよな

大規模なところはstruts多いけど、小規模は独自フレームワークやJSFが多い感じ
JSFはツールが増えてきてstruts置き換えすると思う
590デフォルトの名無しさん:2006/02/24(金) 23:39:28
>>587
Mapバリバリがよい設計に対しわかりにくいというのがそもそも納得いかない。
591デフォルトの名無しさん:2006/02/24(金) 23:40:29
>>588
だから型エラー絶対ありきで考えるなよ。
592デフォルトの名無しさん:2006/02/24(金) 23:42:15
つーか型エラーなんておきね。全部beanまたはStringなんで。
新でもInteger、Dateはもたね
593デフォルトの名無しさん:2006/02/25(土) 09:01:10
>>592
それ最悪だな
日付データから前日とか1ヶ月後とか判定したいときには
都度DateFormatでparseするのか?
594デフォルトの名無しさん:2006/02/25(土) 10:07:33
別にダイナミックな手法を否定はしないけど
変わりようがない部分にまでゴリ押しするのは勘弁して欲しい。

>ActionFormもDB層まで持っていくし、
(中略)
>ただ、仕様変更で困ったことはもちろんない。
Webサービスにしてとか言われたらもうアウトじゃねーの?
ロジックから下とビューを分ける気ないんなら
Strutsなんて使わずにガリガリ書けばいいじゃん。
その方がソース読まされる方も割り切れて臨める。
595デフォルトの名無しさん:2006/02/25(土) 10:13:21
>>593
入力ミスがあったら入力画面に戻って入力内容を表示、とかしようとすると
ActionFormのプロパティは全部Stringにならない?

いや、Strutsはちょっと試したくらいなんで、
実はintもDataも使えるCoolな方法があるというのなら教えて欲しい。
596デフォルトの名無しさん:2006/02/25(土) 10:16:06
>>595
ActionFormはStringかboolean以外持たないのが普通
その時点で、View層以外には使えないと考えるのが普通
ActionFormの制限に合わせてDB層まで全てStringで統一するというのはあまりに無謀じゃない?
597デフォルトの名無しさん:2006/02/25(土) 10:47:10
>>596
激しく同意。
598デフォルトの名無しさん:2006/02/25(土) 10:49:43
>>596
いやもちろん考えている。
DBはibatisを使用しているので、to_date、to_charで何も不便しない。
たまに途中で日付計算する必要がある場合はもちろんDateFormatで変換する。
599デフォルトの名無しさん:2006/02/25(土) 10:55:42
jspでエラーになった場合に、global-exceptionのハンドラに遷移させることはできるでしょうか?
600デフォルトの名無しさん:2006/02/25(土) 11:32:56
>>599
Strutsのリクエスト処理の流れを考えれば、基本的にはそれは想定外なことはわかるはず。
global-exceptionは、Actionのexecuteメソッドでの例外処理を想定している。

# かなりムチャすればできないこともないが・・・
601デフォルトの名無しさん:2006/02/25(土) 11:50:26
日付の話が出ているので確認したいのですが
htmlの日付文字情報をBeanにセットするときに、
確かConverterが使えましたが、
使用するのはDateLocaleConverterでよいのでしょうか。
602デフォルトの名無しさん:2006/02/25(土) 12:14:12
>>601
自己解決。
ConvertUtils.register(new DateLocaleConverter(Locale.JAPAN, "yyyy/MM/dd"), Date.class);
System.out.println( ConvertUtils.convert("2005/11/10", Date.class));
System.out.println( ConvertUtils.convert("2005/11/10", Date.class).getClass());
603デフォルトの名無しさん:2006/02/25(土) 12:15:24
>>602
但し複数フォーマット対応方法がわからず・・・
登録しなおししなくてもいけるのかな・・・
604デフォルトの名無しさん:2006/02/25(土) 12:51:43
>>598
画面によって日付フォーマットを変えたいときには、一度parseしてからまたformatするのか?
あと、数値データで計算するときも、都度parseしてから計算してまたStringに戻すのか?

Struts Validatorを使えば、Actionに到達した時点で変換可能であることが保証されるのだから
Action内でDateや数値型にparseしてロジック以降の層に渡した方が効率的だと思うけどな
605デフォルトの名無しさん:2006/02/25(土) 13:07:31
で、あとから「和暦で入力することになりました」とか言われるわけだ。
606デフォルトの名無しさん:2006/02/25(土) 13:08:22
それは追加コストで
607デフォルトの名無しさん:2006/02/25(土) 13:11:19
>>605
Java SE 6は和暦対応するよ
608デフォルトの名無しさん:2006/02/25(土) 14:22:33
>607
それは知ってる。
けどcommons-validatorが対応する前に
strutsどころかブラウザ使ってどうのなんて廃れてて、
リッチクライアントへ完全に移行されてると思う。
元号の記述フォーマット考えるだけで収拾付かなくなりそう。

mustangの和暦サポート自体は助かるけど。
Action内部で独自に検証するにしても全然楽になるし。
609デフォルトの名無しさん:2006/02/25(土) 14:25:48
StrutsのActionFormになにを定義すべきか分からなくなったので
教えてください。(長くてすみません)

こんな遷移を想定します。
ページ1→(aciton1)→ページ2

ページ1
 検索条件を入力してaction1を呼び出す
ページ2
 検索結果が表示され、
 使用した検索条件が表示のみされます(入力フォームではない)。

ActionFormはリクエストデータの入れ物として
使用すべきであって、レスポンスデータはActionFormではない方が
よいのでしょうか?単なるDTOとして作成すべき?
そのあたりで混乱してしまいます。

例えば上記の例では、
・ActionForm1に検索条件のみ用意
・検索結果を格納するBeanを別途用意
・action1では、ActionForm1を使って検索し、Beanに結果を格納し、
 request.setAttributeで渡す
・ページ2では、requestスコープのBeanを参照して結果を表示する
 (ActionForm1は参照しない)

ページ2では、検索条件も表示のみする必要があり、
それはすでにActionForm1に入っているわけですが、
それもBeanに移し変えて使うべきなのか、それともActionFormを参照すればよいのか
分からなくなりました。
610デフォルトの名無しさん:2006/02/25(土) 15:21:17
>つーか、HTMLの仕様がばかげているんだよ。
>こんな理いろいろ要求されているのに、
>コネクションレスでのやり取りは無理だ。
>根本的にHTMLの仕様の問題!

じゃあそれを前提にさらに複雑なページフローをやろうとするstrutsは
基地外以外の何物でもないな。
611デフォルトの名無しさん:2006/02/25(土) 15:47:06
>>609
ActionFormがFORMのパラメータを保持するBeanだと思えば
検索条件を表示するときは、ActionFormをそのまま利用すればいいんじゃないだろうか
612609:2006/02/25(土) 16:05:02
>>611
そうしてしまった場合、ページ2がaction1に依存してしまいますよね。
この例だけならば問題ないのですが、
別のactionでもページ2を表示する場合には、ActionFormも使いまわさないといけませんよね。
だから、表示は別のBeanで用意して移しかえることを考えたのですが。
613デフォルトの名無しさん:2006/02/25(土) 16:50:00
actionで、バイナリ出力ストリームにJPEG形式で画像を出力しておいて、
それをJSPで利用する方法にはどうすればよいでしょうか?
漠然とした質問ですいません。
614デフォルトの名無しさん:2006/02/25(土) 17:35:58
>>613
聞いているのは、出力する方法ではなく、利用する方法?
CGIのアクセスカウンターみたいに、imgタグのsrc属性で、そのactionを呼び出せばよいかと。
615デフォルトの名無しさん:2006/02/25(土) 19:07:40
>>612
Struts-beanタグでもJSTL-COREタグでも、
requestやsessionにsetする名前と、beanのプロパティ名には依存するがクラスには依存しない
Mapのkeyをプロパティ名と合わせれば、Mapでも代替可能だし
ただし、表示するJSPのhtml:form配下のタグ初期化に使うのだったら話は別だけど
616609:2006/02/25(土) 21:19:35
>>615
プロパティ名は依存しなくても、form-nameは同じにしなければならないと思うのです。
JSP-ELの例ですと、
action1から表示する場合には、actionform1.hoge
action2から表示する場合には、actionform2.hoge
見たいな感じで。なんか間違っているかな??
ActionFormをrequestやセッションにセットするのって、
自動的にform-nameで入っているのを使わずに、自前で名前付けてsetAttributeするってことでしょうか?
617デフォルトの名無しさん:2006/02/25(土) 21:30:28
htmlタグはnameを指定しない場合はActionMappingで定義されたform-nameのプロパティを見るけど
bean,logicタグはnameで指定したpage,request,sessionのオブジェクトを見にいく

個人的にはActionFormは入力のプロパティだけもって、確認などで表示したい場合は別オブジェクイト
で表示した方がいいかな〜とは思う
ただし、別オブジェクトに設定する手間をどう考えるかは人次第だな
618609:2006/02/25(土) 22:31:24
Strutsとしては、別に決まっていないってことでしょうか。
別に間違いではなければ、
表示だけの場合はActionFormではなく、
他のオブジェクトにする方法で行こうと思います。

で、そうした場合にもう一つ質問です。
>>615の最後で書いてあるような、
表示するページ(ページ2)の入力フィールドに初期値を入れるには、
そこに相当するActionFormを、actionでnewしてあげて、中身を突っ込んでから
form-nameでsetAttributeすることで確認できました。

ActionFormはあくまで「formタグ内のinputタグの値を入れる器」と考えて、
こうしたのですが、こんな感じでいいのかな?
619613:2006/02/26(日) 02:30:34
>>614
ありがとうございます。
具体的にやりたいことは、

http://www.atmarkit.co.jp/fjava/javatips/092jspservlet036.html

↑この方法で出力したグラフをJSPで表示したいのですが、
表示されるのがjpegそのものになってしまうのです。
htmlの中で表示したいのです。
620デフォルトの名無しさん:2006/02/26(日) 09:46:16
>>619
<html>
<head><title>Strutsの前にHTMLを勉強しようよ</title></head>
<body>
<h3>チャート</h3>
<img src="chart.jpg" alt="チャート"/>
</body></html>
621デフォルトの名無しさん:2006/02/26(日) 12:06:49
>>620
それだと1画面で複数グラフができないんです。
622デフォルトの名無しさん:2006/02/26(日) 12:32:00
Strutsの話でもねーなこれ
623デフォルトの名無しさん:2006/02/26(日) 13:30:49
>>621

<html>
<head><title>Strutsの前にHTMLを勉強しようよ</title></head>
<body>
<h3>チャート</h3>
<img src="chart1.jpg" alt="チャート"/>
<img src="chart2.jpg" alt="チャート"/>
<img src="chart3.jpg" alt="チャート"/>
</body></html>
624デフォルトの名無しさん:2006/02/26(日) 21:17:38
>>596
え?普通なの?
625デフォルトの名無しさん:2006/02/27(月) 18:50:44
動的にファイルアップロードのフォームを増やしたいのですが
どうしたらよいか分かりません…
@ITで該当の記事を発見したのですが、
それでも理解不能でもうちょっと詳しいサンプルコードを
どなたか教えていただけないでしょうか。

ちなみにその記事↓
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=8355&forum=12
626デフォルトの名無しさん:2006/03/01(水) 00:00:09
質問です。
struts-configのactionマッピングに、validate=falseと指定しても、
クライアントのJavaScriptの入力チェックが動いてしまうのですが、そういうものなのでしょうか?
クライアントからstruts-configを参照できないので、分からないでもないのですが。。。

同じActionFormを使った2種類のActionで、片方はvalidate=true、
もう片方はvalidate=falseと指定しようと思ったのですが。。。
627デフォルトの名無しさん:2006/03/01(水) 16:55:11
628デフォルトの名無しさん:2006/03/01(水) 18:57:28
コメント無視することが出来ないばかりで、かなり痛い人に見えてきましたね

>選択するのはユーザであって、フレームワーク開発者が押し付けることじゃない。
コレはさすがにひどい
それぞれコンセプトの違うフレームワークを、ユーザーが選んでるわけだが。
なんでも出来るものを作ったとしても、複雑すぎて使い物にならないこと位分かるだろうが。
629デフォルトの名無しさん:2006/03/01(水) 21:43:31
ロッド・ジョンソンの発言とされる
「strutsなんてなかったほうが良かった」ってのは
ejb の間違いじゃないっけ? struts でも言ってたの?
630デフォルトの名無しさん:2006/03/01(水) 21:46:24
>625
そのものズバリじゃないけれど
「struts LazyList」でググって見ると
良い例が出てくると思うよ。
631デフォルトの名無しさん:2006/03/01(水) 22:06:36
なんで「そもそも Web がクソ」にたどり着かないんだろう?
632デフォルトの名無しさん:2006/03/02(木) 00:03:51
>>629
そりゃネタでしょ
「○○なんてないほうがよかった。○○のせいで2,3年が失われてしまった。」
というパターン。
633デフォルトの名無しさん:2006/03/02(木) 11:53:55
>630
たしかにLazyは昔使ってたけど、validation.xmlによるvaludationを行う際にきちんと
画面の再表示ができるようにbeanのスコープをsessionにした瞬間から
Lazyは不要となった。

スコープsessionはクソだって?
もちろん画面遷移時にsessionのゴミ掃除をするフレームワークを作ったよ。

最初はStrutsクソだと思ったけど、
 valudation.xmlをちゃんとつかえるようにする(ボタンごとに異なるvalidationで、
   validation後もhidden項目を使用しないで正常に前の状態を保持する)
 struts-cfg.xmlは設定をカスタマイズ(Tokenとかサブウィンドウ表示とか)
 ビジネスロジックはスレッドセーフにする
 ビジネスロジックは概ね画面単位、メソッドはボタン単位
 PropertyUtilsもいろいろカスタマイズ
 strutsのjspタグはほぼ全てカスタマイズ(次の10件、並べ替え、変更チェック、権限制御等)
 トランザクション制御は1箇所で行う(DBMSには依存しない)
 request、responseはビジネスロジックから隠蔽 
 
こんな感じのフレームワークを作ったらStrutsも悪くないと思えるようになった。
製作コストの関係で後でPMに怒られたけど。
しかしめげずに設計情報から自動生成するフレームワークまで昇華させる。
634デフォルトの名無しさん:2006/03/02(木) 14:43:17
当スレの633は、struts を Web 開発に使用した際、
標準の状態ではロクなアプリが作れないことを発見した。
これでは開発に使用しても効率は上がらない。
(中略)
その結果ついに、Struts も悪くないと思える程度のフレームワークを開発した!!

一方ロシアはJWSを使った。
635デフォルトの名無しさん:2006/03/02(木) 17:06:55
>634
JWSってJavaWebServiceか?
636デフォルトの名無しさん:2006/03/03(金) 02:13:47
>>627
てか、ぎゃーぎゃー言うほどStrutsって難しいか?
癖はないし素直だし、全然簡単だと思うのだが。
下手に妙な機能に手を出すから、おかしいことになる。

長い間拡張されてきたフレームワークってな、何でも
できるようになっているのだからあれとこれを組み
合わせて云々とかやってしまうと難しくなるのは
あたりまえ。
その辺をとりあげて複雑だとか言われてもねぇ。
637デフォルトの名無しさん:2006/03/03(金) 09:14:21
>>636
複雑っていうか、過剰に手間がかかるのを批判しているだけかと。
「なんでHelloWorld1つ動かすのに、あんなにいっぱいクラス作ったり、XMLファイル書いたり、
Struts以外と互換性のないタグ使ってJSP書いたりしなきゃならないんだよ?
マンドクセー」

Struts自体を複雑で困難と思ってる人はいないんじゃないかな。
638デフォルトの名無しさん:2006/03/03(金) 11:03:32
マジレスすると、
HelloWorld一つ動かす目的でStrutsを使う方が悪い。
適材適所。

自分の用途に合わないってだけで
あるプロダクトを悪と決めつけるのは、
もう、アフォかと。
639デフォルトの名無しさん:2006/03/03(金) 12:05:40
strutsがgetのパラメータをbeanにセットするのは、BeanUtilsやPropertyUtilsを使用していると思うのですが
そのときに、htmlエスケープの入った文字をアンエスケープして、
パラメーターからプロパティーを分割し、beanにセットしていると思いますが、
エスケープしてbeanにセットするクラスがあるのでしょうか。
RequestUtilsをみてみたのですが、わからなかったです。
なぜそんなことを調べているかというと、
アクセスURLを履歴で取ってあり、その履歴の処理を再実行する必要があり
自力でURLをbeanにセットする必要があります。
&でsplit、=でsplitをしていたのですが、<や、値に「=」が含まれていて
プロパティ、値 に分割できません。
640デフォルトの名無しさん:2006/03/03(金) 12:07:19
>>638
「うんうんもっともだ」とか言って、したり顔で同調するような
らいとうぇいと族が、ぶろがーには多いしなー

でも決定権のないコーダーの愚痴は愚痴として聞き流して
やりゃいいじゃんとも思う
641デフォルトの名無しさん:2006/03/03(金) 12:11:15
>>639
デコードしているのは、Strutsではなくサーブレットコンテナ、つまりTomcatとか。
求める機能は標準APIにもあって、java.net.URLEncoder、URLDecoderがそれ。
642デフォルトの名無しさん:2006/03/03(金) 13:47:48
>>641
サンクスです!
643デフォルトの名無しさん:2006/03/03(金) 17:42:08
JIS第1,2のみ可能な入力チェックをする必要がありますが、
正規表現で使用していますが、JIS第1,2の文字コード範囲指定をしてOKかと思ったのですが、
SJISとunicodeの文字に対する文字コードの大小が異なり苦しんでいます。
何か簡単な方法はあるでしょうか?
644デフォルトの名無しさん:2006/03/03(金) 17:59:37
第1,第2がゆにこに変換された後の文字コードを正規表現で指定するんだ
645デフォルトの名無しさん:2006/03/03(金) 18:13:32
>>644
ありがとうございます。
ちょーかなしいことに、
ttp://ash.jp/code/unitbl21.htm
にunicode表があるのですが、
unicodeでソートされてないので見にくいですね・・・
ま、ローカルに落としてソートしますが・・・
646デフォルトの名無しさん:2006/03/03(金) 21:03:28
>>643
byte化して、SJISでチェックするのは?
647デフォルトの名無しさん:2006/03/03(金) 22:04:25
>>637
Hello Worldってのがどれくらいのものを指しているのか
分からんけど、最低限action要素とactionform要素を
1つづつ書いたstruts-config-xmlを用意して、
jspファイル一つ置くだけで実現できんか?
web.xmlはサーブレット系全体で必要だから、
strutsのせいじゃないので除外。

……いや、ていうか、1ページならjspだけでいいじゃん。
だってAction実行なんか不要だぜ?

というわけで638に同意。
648デフォルトの名無しさん:2006/03/04(土) 01:40:03
似たようなActionクラスを何十個も作る時、
Template Methodパターン使ったらすげーはまるんじゃねーかな、と
ふと思った25の夜だったんだが実務でやった奴おらんかね。
649デフォルトの名無しさん:2006/03/04(土) 03:54:47
>>648
結構やってる人は多いと思うが、どうしたの?

(実はTemplate Methodパターンをさっき知ったことは秘密だw)
650デフォルトの名無しさん:2006/03/04(土) 04:47:27
Template Methodパターンとはちょっと違うかもしれないけど、
ログインしてるかどうかをチェックする基底クラスを書いて、その中からもう一つのexecute呼ぶってのは使ってる。

public abstract class LoginUserAction {
public ActionMapping execute(なんちゃらかんちゃら) {
ログインチェック;
ログインしてなかったらログイン画面へ;
return executeConcrete(なんちゃらかんちゃら);
}

public abstract ActionMapping executeConcrete(なんちゃらかんちゃら) {
}

}

で、これを継承して、executeConcreteだけ普通に書けば、ログインチェックは済んでる、っていう算段。

僕も結構やってる人が多いと思う。

たださ、これをやってると、だんだんDIしたくなってくるのなw

前処理、中間処理、後処理(Viewをつくるとか)で、自由な組み合わせすると、継承じゃ無理になってくるから
SpringFrameworkとか使ったら楽しいのかなぁ、と思ったり。
651デフォルトの名無しさん:2006/03/04(土) 04:48:54
executeConcreteの宣言は、
public abstract ActionMapping executeConcrete();でした。
652デフォルトの名無しさん:2006/03/04(土) 10:22:08
>>650
まさに同じことを思ってDI使った
ログ出力とか、Actionの実行権限チェックしたいときとかに使ってる
StrutsのAction自体が継承で色々バリエーション持ってるから、
継承で作っていると最終的に行き詰ってしまうんだよね
653デフォルトの名無しさん:2006/03/04(土) 10:40:54
>HelloWorld一つ動かす目的でStrutsを使う方が悪い。
>適材適所。
その適所が見つからないという話なんだがな。
654デフォルトの名無しさん:2006/03/04(土) 11:01:43
>ログインしてるかどうかをチェックする基底クラスを書いて
そんなものはAOPでやっちまえってのが最近の流れだと思う。
継承はなるべく簡素にしないとあとあと泣くことになる。
655デフォルトの名無しさん:2006/03/04(土) 12:01:05
ログインチェックはFilterでやるか、RequestProcessorを使ってやるのが定石。
656デフォルトの名無しさん:2006/03/04(土) 17:17:16
>>653
HelloWorldを引き合いに出してちゃ見つからんだろうね
657デフォルトの名無しさん:2006/03/05(日) 12:06:41
ログインチェックを、Actionでやると
ActionからActionへのForwardでもチェックされることになるから、
Filterでやるべきだと思う。
658デフォルトの名無しさん:2006/03/05(日) 15:10:41
そう言えばServlet2.4の仕様では、forwardに対してもfilterかけられるんじゃなかったっけ?
659デフォルトの名無しさん:2006/03/07(火) 16:55:10
strutsを使用すると、Actionにくるときには必ずセッションが生成されるものなのでしょうか?
660デフォルトの名無しさん:2006/03/07(火) 21:01:31
DBから取得したデータを
コンボボックスの項目として表示したいのですが
やり方がわかりません。
どなたか教えて下さい。
661660:2006/03/08(水) 00:11:04
配列よりArraylistを使うのが一般的なんでしょうかね。
662デフォルトの名無しさん:2006/03/08(水) 00:47:45
>>659

> strutsを使用すると、Actionにくるときには必ずセッションが生成されるものなのでしょうか?

Sturts二回目の俺の認識だとそうではないと思う。
Sessionの管理はStrutsの仕事ではない。


初回ログインの認証に通ったところで
HttpSession session = request.getSession(true)
と新規にsessionを作り、sessionの中にユーザ情報なりを詰めておく。

あとは毎回のアクションのロジックに入る直前で
HttpSession session = request.getSession(false)
してチェックしてる。


って、実はよく分かってない。
エロい人の解説希望。
663デフォルトの名無しさん:2006/03/08(水) 11:00:27
org.apache.struts.action.RequestProcessorのprocessLocale()メソッドで
HttpSession session = request.getSession();をしている。
Struts1.2.8のソースコードでは609行目。
ここは、Struts設定ファイルの<controller>でlocale="false"を設定していない限り
すべてのリクエストが通る処理なので、この時点でHttpSessionオブジェクトが作られる。

というわけで、>>659の「strutsを使用すると、Actionにくるときには必ずセッションが生成されるものなのでしょうか? 」
という問いに対しては。「YES」だ。
664デフォルトの名無しさん:2006/03/08(水) 11:01:59
ついでに言うと、>>662

> あとは毎回のアクションのロジックに入る直前で
> HttpSession session = request.getSession(false)
> してチェックしてる。

も無意味だな。通常、ここでfalseは返らないだろう。
665デフォルトの名無しさん:2006/03/08(水) 11:15:29
>>663
ありがとうございます。
localeの処理でセッションがどうしても必要だったんですかね・・。
666デフォルトの名無しさん:2006/03/08(水) 11:22:03
>>665
java.util.Localeオブジェクトを一回だけ作ってSessionに入れ、
その後は「このセッションのロケールはこれ!」って判定を前提に
作られているフレームワークだから。
667デフォルトの名無しさん:2006/03/09(木) 15:17:38
strutsの入力チェックはcommonsのvalidationを使用しているので、
strutsのvalidation設定ファイルは、BLからでも使用することはできますでしょうか。
画面で入力できるデータを、CSVで登録しなければならず
画面で同じチェックをするのに、チェックロジックを流用したいと思いまして。
CSVからマッピングするクラスは、validationで定義してあるbeanと同じです。
668デフォルトの名無しさん:2006/03/09(木) 19:25:58
667です。自力で試しているのですが、何とかできそうです。
ただ、Servletでorg.apache.struts.validator.Resourcesが必要なのですが、
こいつの取り方を教えていただけないでしょうか。
669デフォルトの名無しさん:2006/03/09(木) 19:34:39
>>668
自分で見つけました。
String prefix =
ModuleUtils
.getInstance()
.getModuleConfig(request, application)
.getPrefix();

return (ValidatorResources) application.getAttribute(
ValidatorPlugIn.VALIDATOR_KEY + prefix);
670デフォルトの名無しさん:2006/03/10(金) 02:14:33
>>664
エロい人、サンクス。
ソースあとで読んでみます。
ところで

> > あとは毎回のアクションのロジックに入る直前で
> > HttpSession session = request.getSession(false)
> > してチェックしてる。
>
> も無意味だな。通常、ここでfalseは返らないだろう。

「ここでfalseは返らない」とはどういう意味でしょうか?
671デフォルトの名無しさん:2006/03/10(金) 07:26:48
>>670
すまん。「nullは返らない」の間違い。
672デフォルトの名無しさん:2006/03/13(月) 15:00:29
画面で、年、月、日を別々なプルダウンで作成する(こうしなければだめって言われた)とき
javasciptで、YYYY/MM/DDのデータを作成して、サーバーにサブミットするか
3つの部品としてサブミットして、javaで日付を作成するか、皆さんでしたらどちらですか。
また、もっと便利な方法はあるでしょうか?
673デフォルトの名無しさん:2006/03/14(火) 10:49:26
>672
カレンダー出したほうがわかりやすいですよ。
と客先にレビューしてみてはどうか。
ソースはMyFaceあたりからJavaScriptの部分ぱくればOKか?

まあ、もし672の方法だったら、MMの部分でDDのデータは可変に
かわるじゃん?可変にしなけりゃいけなかったらJavaでやったほうが
らくにつくれない?(というのはJavaScriptが苦手な人の発想か?)
674デフォルトの名無しさん:2006/03/14(火) 18:54:09
ActionFormに以下のフィールドがあり、sub_2_itemは内部管理項目として持っています。
sub_1_item
sub_2_item
htmlからは、sub_1_itemしか転送されないようにしているのですが、
セキュリティーテストで、わざとGETのパラメータでsub_2_itemを渡し、
その後の処理でエラーになってしまうという、お恥ずかしい状況になっています。
strutsのpreffix、suffixがよくわからないのですが、
sub_2_itemのGETパラメータが来ても、sub_2_itemを更新させない方法はあるでしょうか?
675デフォルトの名無しさん:2006/03/14(火) 19:52:47
>674
CustomRequestProcesserクラスをつくって、doGetをオーバーライド


なんてだめだよねー。全ての画面でdoGetつかえなくなったらまずすぎるよねー
676デフォルトの名無しさん:2006/03/16(木) 23:38:36
>>674
getter、setterの名前をパラメータ名と違うのにして、
プログラム内からは普通にそっち使ってアクセスすればいいんでないの?

パラメータ名と一致させなきゃsetter呼ばれないんじゃなかったっけ。
677デフォルトの名無しさん:2006/03/17(金) 09:54:12
>>676
説明不足でした。
セキュリティーレビューをしていまして、
ActionFormのフィールで、画面からPOSTパラメータで送信されるもの以外のフィールドがあり、
故意にGETパラメータでその値を送信した場合、簡単にユーザーによってデータが改ざんされてしまうため、
そこをブロックしなさい、といわれています。
フィールドを消すべきだとはわかっているのですが、ソース数が多く
別の方法はないかと考えていました。
678デフォルトの名無しさん:2006/03/17(金) 10:41:01
無意味なことをやめろと進言するほうが早いな。
中途半端な知識ほどタチ悪いものはない。
679デフォルトの名無しさん:2006/03/17(金) 12:30:59
>>677
「POSTも偽装できますよ」と言って、office氏がACCSのサイトに対してとった手口を示して、
その提案が無駄なことを伝えましょう。

GETかPOSTかに関わらず、パラメタは全チェックが基本でしょう。
TextSS のWindowsXP(Professional)64bit化おながいします

もしくは64bitにネイティブ対応したテキスト置換ソフトありますか?
681デフォルトの名無しさん:2006/03/22(水) 15:18:03
結局、Strutsにしろ、JSFにしろ、プログラマはほとんど「使い方」を覚えるだけに
なって、つまんね。
682デフォルトの名無しさん:2006/03/22(水) 15:52:19
>>681
JavaEEも.NETもそんな感じだね。
既に用意されているものの使い方を覚えて、組み合わせるだけ。
自分で作っているという実感がだんだん薄くなってきている。
683デフォルトの名無しさん:2006/03/25(土) 23:40:59
JSFはまだ組み合わせるだけで何でもできるという域には達してないと思うけど
あれこれカスタムなんたらを作る楽しさはあるんじゃないの
そして後日俺様フレームワークだと非難される罠
684デフォルトの名無しさん:2006/03/26(日) 05:52:02
strutsから離れて3年(当時は1.1bだったかな)経ったおれが戻ってきましたよ
なんか sturts-share と struts-action に分かれるだの、webwork と統合するだの
最近の状況を教えてくれ。

http://struts.apache.org のトップページを斜め読みすると、以下のような認識であってますか?

・action とか forward とかを、struts-action フレームワークで管理
・GUI 周りを、compornent-based な JSF をつかった struts-shale フレームワークで管理

このようにした理由:
・GUI に、既存のテンプレートエンジン等を使っている人は
 struts-action を使ってくれ
・JSF とかが好きな人は、両方使ってくれ
685デフォルトの名無しさん:2006/03/26(日) 06:59:48
>>684
・従来、Strutsフレームワークと呼ばれていたもの・・・Actionフレームワーク
・JSFベースで作った全く新しいフレームワーク・・・Shaleフレームワーク
ってだけ。
686デフォルトの名無しさん:2006/03/28(火) 20:36:56
strutsのbean:defineのidで定義した変数は、jspの<% %>で使用できますが、
独自defineタグのタグリブを作成し、doEndTagでpageContext.setAttributeしているのですが、
タグリブ直後に、<% %>内で、setした変数を使用すると、コンパイルエラーになります。
bean:defineはどのように変数を定義しているのでしょうか?
687デフォルトの名無しさん:2006/03/28(火) 21:18:04
>>686
オープンソースソフトウェアなんだから、そういう時こそソース見ろよ
688デフォルトの名無しさん:2006/03/29(水) 10:33:24
>>687
すいません。もっともで。
1.2.7で、252行目で単純にpageContext.setAttributeしてました。
やってることは同じなんですが・・・・どうしてでしょうか。
689デフォルトの名無しさん:2006/03/29(水) 10:54:58
ずれてるずれてる。
>687死ね
690デフォルトの名無しさん:2006/03/30(木) 10:47:00
htmlで"のエスケープ文字はありますが、'はないのでしょうか。
691デフォルトの名無しさん:2006/03/30(木) 14:40:58
>>690
明らかにスレ違い。下手すると板違い。
"のエスケープ文字が、&quot;(を半角化したもの)だというのであれば、
答えは「ある」。後はググれ。
692デフォルトの名無しさん:2006/03/30(木) 16:14:36
春だからな
693デフォルトの名無しさん:2006/03/30(木) 16:29:21
"
694デフォルトの名無しさん:2006/03/31(金) 00:06:46
ちと質問だが、
ページA→ページBという遷移の際に、
ページBの表示が出来ない(たとえば表示対象が削除された等)場合、
ページAに戻して、エラーメッセージをページ上部に表示する、
という場合、どうやればきれいにやれるかな。

URL末尾にページAを表示するためのURLをだらだら付けるのは
いやだし、セッション使うと複数ブラウザ開いたときにおかしくなる。
refererも必ずついてくるわけじゃないしね。

strutsでこういうがエラーハンドリングをやりたい場合の
定石ってある?
695デフォルトの名無しさん:2006/03/31(金) 01:07:03
>>694
actionのinput属性使うって話じゃなくて?

それともページAっていうのが何種類もあり得るって話なのかな?
696デフォルトの名無しさん:2006/03/31(金) 02:50:44
>それともページAっていうのが何種類もあり得るって話なのかな?


そそ。例えば掲示板なんかで、記事に返信をするときに、
返信元記事が消えていれば、返信リンクを押す前に
戻りたいわけね。で、返信リンクはいくつかのページから
飛べる、ような感じ。

ちなみにactionのinput属性というのがよくわかりまセン。

697デフォルトの名無しさん:2006/03/31(金) 03:29:32
698デフォルトの名無しさん:2006/03/31(金) 04:19:55
いや、validateの方法ではなく、例外的なページ遷移をうまく
さばけないかってことなんなんだが……。
699デフォルトの名無しさん:2006/03/31(金) 09:15:19
A1,A2,A3 ... An という複数の画面から B に遷移する可能性があって、
どの Ak から遷移してきた場合も、元の Ak に戻したいってことですよね。

URLに Ak を示す情報をエンコードするのもダメ
セッション使うのもダメということなら
Ak と対になる Bk をそれぞれ作るしか無いのでは?
700デフォルトの名無しさん:2006/03/32(土) 04:14:25
StrutsでCSRF対策って何をしておけばいいのでしょうか?
TransactionToken使えばいいの?
701デフォルトの名無しさん:2006/03/32(土) 07:47:27
>>700
TransactionTokenだけでは不十分。
Strutsだから、という特別な対策方法はない。
Strutsを使っていない場合と同じと考えて良い。
702デフォルトの名無しさん:2006/03/32(土) 11:59:47
全てのActionに入る前に適切な権限コントロールを行うに尽きる。

703デフォルトの名無しさん:2006/03/32(土) 17:49:43
>>702
CSRF対策という点では、それじゃ不十分だろ。
「適切な権限を持った正規のユーザ」に不正リンクなどを踏ませるなどして
意図しない操作を誘発させるものなんだから。
704デフォルトの名無しさん:2006/03/32(土) 22:39:53
>>703
その通りだった。すまん。
必要なのは、画面遷移(Actionの遷移)が適当かどうかを判断することってことでいいかな。
705デフォルトの名無しさん:2006/04/13(木) 13:16:05
Webアプリを作ってるとJSPを作成するのが面倒なんだけど、自動的に作成してくれる
ツールとかないかな? struts-config.xmlとかActionFormとかを参照して。

プログラムを書くのはいいけど、HTMLを記述するのが苦痛でたまらん。
706デフォルトの名無しさん:2006/04/13(木) 17:57:08
>705
Excelで画面イメージを作ったら自動的にJSPに変換するExcelマクロつくってみた。
出来上がったJSPは手を全く加えずに正常動作するのだ。
一応会社では結構みんなに使われてる。
それを君に差し上げたいが、著作権とかの問題でむりぽ。

StrutsConfigからJSPのファイルとFormタグ程度を作成すればいいのであれば
ExadelStudioとかができるよ。
Hibernateにも対応していていいかんじ。

707デフォルトの名無しさん:2006/04/15(土) 00:46:01
>>706
nyでうっかり流出してくれ
708デフォルトの名無しさん:2006/04/18(火) 11:09:05
>707
とりあえず自宅マシンのデスクトップに配置しとくよ
709デフォルトの名無しさん:2006/04/20(木) 13:52:22
strutsのvalidationの修正を反映させるのは、再デプロイをするしかないのでしょうか。
ファイルのタイムスタンプを見て、ファイルが新しくなっていたら再読み込みとかの処理を割り込ますことは可能でしょうか。
710デフォルトの名無しさん:2006/04/20(木) 14:19:46
>>709
ValidatorPlugInを拡張してそういう機能を持ったプラグインを自作すれば?
711デフォルトの名無しさん:2006/04/21(金) 14:30:17
Struts1.2で
struts-config.xmlの
data-sourcesに
DB接続設定を書きたいのですが
どう書けばいいのかわかりません。
教えてください!!!
712デフォルトの名無しさん:2006/04/21(金) 14:50:19
>>711
ドキュメント見て下さい><
713デフォルトの名無しさん:2006/04/21(金) 15:56:37
今勉強がてら strutsを触っているのですが、
submitしたとき、
クライアント側では <html:javascript>によるチェックロジックは自動生成されるくせに、
サーバ側で DynaValidatorActionFormの validateメソッドが自動で呼ばれないのですが
そんなことってあるんですか?
714デフォルトの名無しさん:2006/04/21(金) 23:44:49
action-mappingのvalidateが無いまたはfalseになってるってオチはないよね?
715デフォルトの名無しさん:2006/04/22(土) 00:57:01
>>713
DynaValidatorActionFormってところが怪しいな。
validation.xmlの<form name="">のところに、
ActionFormの登録名を書いてるとか。
DynaValidatorFormではなく、DynaValidatorActionFormの場合は
ここに書くのはpath名なのだが。
716713:2006/04/24(月) 10:38:47
レスありがとうございます。

struts-config.xmlの該当部分はこんな感じです。
cancellable="true"で dtdのエラーが出てるのが気になるといえば気になるのですが。。。
書いておかないと html:cancelが使えないので書いてます。

<action path="/testupdate" name="frmTest" scope="request" validate="true" input="/testForm.jsp" type="foo.bar.TestAction" cancellable="true">
<forward name="update" path="/testForm.jsp" />
<forward name="false" path="/testForm.jsp" />
</action>

で、validation.xmlがこんなの。
<form name="/testupdate">
<field property="item1" depends="required,maxlength">
<arg0 key="item.item1" />
<arg1 name="maxlength" key="${var:maxlength}" resource="false"/>
<var>
<var-name>maxlength</var-name>
<var-value>3</var-value>
</var>
</field>

>>714
バッチリ trueです。多分。。。

>>715
多分これで正解ですよね?
struts-config.xmlの form-beanの定義は org.apache.struts.validator.DynaValidatorFormって書いてますが、これは関係ないですよね?(DynaValidatorActionFormにしても同じでした)
717デフォルトの名無しさん:2006/04/24(月) 11:58:59
strutsのvalidatorって、サブミットやリンクするときに、xxx?page=-100とかやると素通りになるよね。
てことは、validatorでpageチェックもすべき。そのときpageパラメータのpageはint中の一番マイナス名数字にすべき?
718デフォルトの名無しさん:2006/04/24(月) 12:05:30
struts vs JFS どう思います?
strutsに慣れてるんで、JFSの利用価値がいまいちわからん
719デフォルトの名無しさん:2006/04/24(月) 14:23:48
>struts vs JFS どう思います?
無意味な比較に感じる。
もうじき Web で画面作ること自体が忌避されるようになりそうだし。
720デフォルトの名無しさん:2006/04/24(月) 17:16:12
>>719
まあ「もうじき」といっても1年やそこらのスパンじゃないと思うので、
無意味ではないと思うけどね。

>>718はJSFのスレに行ってみるのもいいかもね。
721713:2006/04/26(水) 10:32:12
713の問題、解決しました。

jspで
<html:form action="<%=StringUtil.concat("/test", nextAction) %>"...

というように strutsタグに jspタグを埋め込んでいるのですが、どうやらこれがマズい模様。
ベタ書きすると validatorが呼ばれます。
両者とも生成される htmlには違いがないのに、なぜ挙動が異なるのかは不明です。

教えてエロい人。
722デフォルトの名無しさん:2006/04/26(水) 10:58:58
>>718
StrutsはURL単位での原始的なやりとり

JSFはボタンなどのコンポーネントにイベントを書いていく


とまったくの別物


デザイナーにHTMLつくらせるならJSFはちときつい
かといてstrutsでもカスタムタグとかガンガン埋め込むのも修正時に開発者が死ぬ

一番いいのはループ以外EL式にしてここにこういうテキストを表示しておいてください
と指示するのが一番

デフォでHTMLエスケープされれば完璧だった>EL
<c:out>とかだとデザイン時文字が見えないからね

通常のテキストであれば大きい文字なのか色がついてるのかすべてすぐに理解可能

JSP2.0からは便利なVelocityとして使うのがよさげ
723デフォルトの名無しさん:2006/04/26(水) 12:11:33
その場合は JSP 使わずに Velocity が良い。
JSP は欠点が多すぎると感じる。
もともとコード書けるものに対して、
後付でテンプレート的なもの(ELやタグ)が加わった感じ。
724デフォルトの名無しさん:2006/04/26(水) 12:22:14
感じ感じって、おめぇの気分の問題なぞしらぬわい
725デフォルトの名無しさん:2006/04/26(水) 12:25:32
Velocity 1.4は、log4jと混ぜて使うとメモリリークするよ。
726デフォルトの名無しさん:2006/04/26(水) 12:42:33
マジディスカ
727デフォルトの名無しさん:2006/04/26(水) 12:53:21
velocityはちとテンプレートで問題が出る
ELのエスケープをはさめるのはいいのだが

デザイナが使うのは9割はDreamWeaverだが、これはJSPをきれいに対応していて
静的なHTMLとまったく同じ開発が可能だ

ま、いろいろとやると自分でフレームワーク使って作ったほうが早いという結論に
たぶんほとんどのプロジェクトでこの辺自作してるよね

commonsのel使って。
728デフォルトの名無しさん:2006/04/26(水) 13:05:25
strutsってなんですか?
それよりTOMCATがどうやって動いているのか知りたいんですけど、
どうしたらいいんですか
729デフォルトの名無しさん:2006/04/26(水) 13:54:37
>>728
ソース嫁
730デフォルトの名無しさん:2006/04/26(水) 14:51:06
>>722
JSFはELがでる前に話題になったのでしょうか。
ELを考えると、JSFの利点がないように思え・・・
ELが出た後のJSFは必要性はさほどないのでしょうか?
JSF、JSFと話題は聞きますが、実際に使用しているプロジェクトがほとんどないので・・・
731デフォルトの名無しさん:2006/04/26(水) 14:56:19
新しい風を感じる
732デフォルトの名無しさん:2006/04/26(水) 15:57:34
ELはJSFの置き換えになるという意味がワカランのですが
733デフォルトの名無しさん:2006/04/26(水) 16:07:25
まずキミはどこをどう読んでそう解釈したのかを語ってみてくれ
734デフォルトの名無しさん:2006/04/26(水) 21:47:41
JSFとELを比較するという感覚が理解できん
735デフォルトの名無しさん:2006/04/26(水) 22:37:45
>>722をよんでそういう考え方が出てくるってすばらしい
これぞニュータイプ
736デフォルトの名無しさん:2006/04/26(水) 23:12:30
もうJSPは飽きたっていうか、嫌だ
737デフォルトの名無しさん:2006/04/27(木) 01:01:15
JSPでいいよ。いつまで使えるかもわからん変なタグ覚えたくない。
738デフォルトの名無しさん:2006/04/27(木) 01:16:08
ループ以外のカスタムタグは負け組み
739デフォルトの名無しさん:2006/04/27(木) 04:51:23
質問でふ。
strutsのメッセージリソースはjspの中でbean:messageタグで利用できますが、
カスタムタグの属性として表示文字列が含まれる場合、リソースから取得するために
式を書かんといかんと思うのです。
<hoge:hage value="<%=・・・%>" />
みたいな。
この場合、適切な方法はどうなるのでしょうか。
ResourceBundle.getBundle("application").getString("fuga")
とかそんなのしか思いつかんのですが。
プレースホルダは使わないのでとりあえずこれでもしのげるのですが、
jspの暗黙オブジェクトとかを使えばもっと上手に取得できるんでしょうか?
どうか知恵を貸してください。
740デフォルトの名無しさん:2006/04/27(木) 07:39:02
カスタムタグの属性として表示文字列が含まれる場合
ってのがよくわからん。kwsk
741デフォルトの名無しさん:2006/04/27(木) 08:07:08
わかりにくい表現になっちまいましたみたいで申し訳ないです。

タグの属性の値としてメッセージリソースを使おうとした場合、
いつもどおりのbean:messageを使えないじゃないですか。
そのときどうやってリソースを取得するのがベストなのかなあという
質問でして。
だから、カスタムタグじゃなくてもいいんです。

たとえば、
<input type="submit" value="(ここにリソースを使いたい)">
みたいな。
でもこの例はhtml:submit使えばbodyにbean:messageタグ書けるから
適切じゃないかもしれん。

とりあえず、今問題に直面してるのは、
他の人が作ったカスタムタグの属性に、表示される文字列が存在する。
そこで表示される文字列にメッセージリソースを使いたい。
そのためにはタグの中にタグ書けないから式で表現しないといけない。
どうするのが最適?

まあ、こういうことなんです。
意味不明な部分があったらいくらでも補足します。よろしくです。
742デフォルトの名無しさん:2006/04/27(木) 21:30:34
>>741
普通のHTMLタグの中ならbean:messageタグは使えるので、
その例は適切ではない。

たしかに一部のカスタムタグのvalueなどでbean系のタグが使えなくて
困ることは時々ある。
743デフォルトの名無しさん:2006/04/27(木) 21:55:14
Strutsが管理するMessageResourceだったら
org.apache.struts.Globals.MESSAGES_KEYをキーにして
applicationスコープにorg.apache.struts.util.MessageResourcesオブジェクトが入っているから
RuntimeExpression使ってapplicationスコープからMessageResourcesオブジェクトを取り出し、getMessage(キー)。

744デフォルトの名無しさん:2006/04/28(金) 01:04:26
beanタグはもう忘れてしまったが、JSP2.0とJSTLの組み合わせなら
fmtタグでリソースの内容を変数にsetした後、ELを使って属性内に記述できる。
fmtタグはweb.xmlにデフォルトのロケールとリソースファイルを登録できるので、bean:messageタグとほぼ同じ使い方が出来る
745デフォルトの名無しさん:2006/04/28(金) 01:46:51
746デフォルトの名無しさん:2006/04/28(金) 10:53:55
>739
<bean:define id="xxx">
<bean:message key="fuga"/>
</bean:define>
  :
  :
  :
<hoge:hage value="<%=xxx%>" />

こんなんでいいんじゃない?
747デフォルトの名無しさん:2006/04/28(金) 14:21:31
>>746
だから、page=-1111とかってやると、エラーチェックかからないよ。
>>746以前に、貧弱すぎ。
748デフォルトの名無しさん:2006/04/28(金) 18:52:27
>747
> >>746
> だから、page=-1111とかってやると、エラーチェックかからないよ。
application.propertiesの文字列をとってるだけなのになんでエラーチェックの話になってるの?
749739:2006/04/28(金) 23:42:25
>みなさま
回答ありがとうございます。
とりあえず、>743さんの方式でMessageResourcesを取得することにしました。
特に全部タグじゃなきゃヤダということもないので、これで行こうと思います。

ただ、これだと、ロケールの指定をしない場合、
bean:messageタグとMessageResources#getMessageでは
ロケールの解決方法が違うのか、ブラウザの言語設定をチョコチョコ変えながら
ページを表示すると挙動が微妙に変わります。(リソースの言語が混在する)
bean:messageタグがデフォルトで使用するLocaleは
request.getSession().getAttribute(Globals.LOCALE_KEY)とほぼ等価な雰囲気
なのですが、このAttributeがセットされるタイミングがどこにあるのかわかりませんが、
とにかく上記のロケールがちゃんと取れない(nullなのかしら)場合があるようです。
bean:messageと同じ挙動に寄せたいのですが、ソースを読んだ感じだと
RequestUtils.なんとか(失念)Localeというメソッドが使用されてるようでした。
引数のpageContextってのがよくわかってないので、何物か調べるところで時間切れ。
夢のゴールデンウィーク入りです。

とりあえず運用上の問題になるような部分ではないのでそこまで気にはしませんが、
残りの疑問は大型連休明けに積み残します。

とりあえずみなさまの意見がだいぶ役に立ちました。ありがとうございました。
750デフォルトの名無しさん:2006/04/29(土) 00:55:11
NStruts
http://www.gotdotnet.com/workspaces/workspace.aspx?id=a7c92222-2966-4224-9771-9598179dc1f2

これってどうですか?
使えるのかなぁ?
751デフォルトの名無しさん:2006/04/29(土) 21:20:49
>750
なにこれ?どんな要件で使うのかな?


752デフォルトの名無しさん:2006/05/01(月) 01:43:38
>>751
StrutsアプリをASP.NETに移植するときとか、Struts開発者使ってASP.NETで開発するときとか・・・???
753デフォルトの名無しさん:2006/05/01(月) 10:18:24
すごい狭いターゲットだな
754デフォルトの名無しさん:2006/05/02(火) 09:04:41
>752
ASP.NETの案件でちゃんとMVCモデルで作りたいときじゃないの?
755デフォルトの名無しさん:2006/05/02(火) 23:39:55
>>754
なるほど。
そのワリにはあまり注目されてないみたいだねコレ。

NAntとかNHibernate、Spring.NETなんかだと結構日本語の記事あるのに。
.NETでMVCって需要ないんかね?
756デフォルトの名無しさん:2006/05/03(水) 01:23:11
>>755
ASP.NETそのものがMVCだとMSは主張しているが・・・。

まあ、スレ違いなので適当におしまいにしようや。
757デフォルトの名無しさん:2006/05/10(水) 09:58:31
探せばまだまだある。
commons-transactionだって使えるぞ。
ファイルの追加、削除、リネームをして、
ヤベ、戻したいっと思ったときにロールバックをかけるときれいさっぱりに。
758デフォルトの名無しさん:2006/05/10(水) 10:01:46
>>757
まちがえた!
759デフォルトの名無しさん:2006/05/11(木) 16:01:34
log4jの設定変更を、アプリの再デプロイなしで適用することは可能でしょうか?
760デフォルトの名無しさん:2006/05/11(木) 16:50:36
>>759
Configurator.configure呼ぶだけでOK。
スレッドセーフ気をつけろよ。
761デフォルトの名無しさん:2006/05/12(金) 01:11:31
Actionクラスってシングルトンでインスタンス変数禁止だったの?
知らなかった・・・やべ
762デフォルトの名無しさん:2006/05/12(金) 10:15:47
>761
インスタンス変数は禁止である。Actionクラスは複数のスレッドから呼ばれ、かつスレッドセーフではないから。
シングルトンではない。コンストラクタがpublicなのだから。

チミは誰からシングルトンだと教わったんだ?(see RequestProcessor.processActionCreate() )
763デフォルトの名無しさん:2006/05/12(金) 10:18:47
せめてサーブレットわかってからstrutsやれ
javadoc位読め
764デフォルトの名無しさん:2006/05/12(金) 11:18:54
>>762
GoFパターンのシングルトンパターンそのままのコードじゃなくても、
インスタンスが常に一つしか生成されないものをシングルトンインスタンスと言うんだよ。
おまえ、DIコンテナとか使ったこと無いだろ?

765デフォルトの名無しさん:2006/05/12(金) 11:37:09
あまり幼稚なこというな。
第一、常に一つしか生成されないってどこに書いてある?
766デフォルトの名無しさん:2006/05/12(金) 11:50:33
>>765
> 第一、常に一つしか生成されないってどこに書いてある?
つ ソースコード
767デフォルトの名無しさん:2006/05/12(金) 11:58:49
>>766
正確には、RequestProcessor一つにつき一つだな。

Actionインスタンスをフレームワークに生成させないで、
アプリで勝手にnew()していたら話しはまた別だが。
768デフォルトの名無しさん:2006/05/13(土) 12:39:02
DIコンテナがRequestProcessorを拡張してActionを生成している場合
シングルトンではなくてリクエストやセッションスコープになっていることもあるな
JSFのManagedBeanになると、リクエストパラメータをフィールドに持ってるからシングルトンではないし
結局、Actionをシングルトンにする意味ってあったのだろうか?
769デフォルトの名無しさん:2006/05/13(土) 12:56:56
>>768
できるだけオブジェクトの生成回数を減らしたいというだけかと。
770デフォルトの名無しさん:2006/05/15(月) 19:25:56
>>769
でもActionFormBeanはリクエストごとに生成されるんだよね?あんまり意味なくない?
771デフォルトの名無しさん:2006/05/15(月) 22:34:42
>>770
短命オブジェクトは新世代GCで負担少ないから問題なし
772デフォルトの名無しさん:2006/05/15(月) 22:45:49
>>771
それならActionも同じじゃね?今はActionをSingletonにしているけど、
SingletonにせずにActionFormと同じようにリクエストごとに生成しても
いいわけじゃん。
短命オブジェクトは負担かからないなら、Actionも短命にしてしまえばいい。
ActionFormが短命でActionが短命でないというのがよくわからん

それから新世代GCってすごそうな名前だな。世代別GCの間違いだとおもうけど。
773デフォルトの名無しさん:2006/05/15(月) 23:09:33
new世代のGCとold世代のGCだから間違いではない
774デフォルトの名無しさん:2006/05/15(月) 23:48:13
>>770
ActionFormBeanはアプリケーション初期化時に一回作られるのみだ。

・・・って揚げ足取りスマソ。混同するからActionFormと書いてくれ。
ActionFormとは別にorg.apache.struts.action.ActionFormBeanという
フレームワーク内部コンポーネントが存在する。

それはさておき、ActionFormはインスタンス変数に
リクエスト毎の値を保持する必要があるからリクエストスコープになっている。
リクエストスコープオブジェクトは必要最低限。
毎回のリクエスト時にインスタンス生成しなくて
よい物はできるだけインスタンス生成の回数を減らす。

基本的なアプローチだと思うよ。



775デフォルトの名無しさん:2006/05/16(火) 00:57:27
何も考えないと殿堂入りしやすくなってFullGC発生しやすくなるから注意な
776デフォルトの名無しさん:2006/05/16(火) 10:42:47
>>773
「新世代GC」なんてだれもいわない。「世代別GC」と「新世代GC」でぐぐってみろ。
なるべく正しい用語をつかってくれ。
777デフォルトの名無しさん:2006/05/16(火) 10:43:46
世代によって動くアルゴイズムかえれるだろ
778デフォルトの名無しさん:2006/05/29(月) 23:35:50
質問です。
画面A→B、C→Bというような遷移がある時、Bの表示に必要なデータの
生成をする責任はAAction、CActionに存在すると思うが、そうするとBの表示のために
必要なデータの収集処理が重複してしまう。
こんな時みんなどうしてる?
779デフォルトの名無しさん:2006/05/29(月) 23:52:33
>Bの表示に必要なデータの
>生成をする責任はAAction、CActionに存在すると思うが

この前提が間違い。B表示用のActionを作れ。

ちなみに、全角英文字を使う時点でエンジニアとしてのセンスを疑われることも覚えておけ。
780デフォルトの名無しさん:2006/05/29(月) 23:58:32
A画面、B画面から呼び出される処理がまったく同じものであれば共通のActionを使えばいいし
処理としては別だが同じロジックがある場合は、Actionから呼び出すService層のクラスや、戻り値のBeanを共通化すればいい
781デフォルトの名無しさん:2006/05/30(火) 00:06:55
> A画面、B画面から呼び出される処理がまったく同じものであれば共通のActionを使えばいいし

明らかに別の画面の場合は共通Actionにするのもどうかなと

> 処理としては別だが同じロジックがある場合は、Actionから呼び出すService層のクラスや、戻り値のBeanを共通化すればいい

Service層を使う件は検討したんだけど、そうするとそのServiceって特定の画面用になってしまって画面と本来疎結合にしたいのに
関係が出来てしまわない?


782デフォルトの名無しさん:2006/05/30(火) 00:44:20
A画面→AAction→DAction→C画面
B画面→BAction→DAction→C画面
ってのもありかな
783デフォルトの名無しさん:2006/05/30(火) 00:59:54
> A画面→AAction→DAction→C画面
> B画面→BAction→DAction→C画面
> ってのもありかな

この場合AAction→DActionのパスは
<forward name="d" path="d.do"/>
でDActionに委譲することになると思うんだけど、A画面からC画面に
パラメータが欲しい時に無理だった気がする...
たしかrequest.setAttribute("dForm", dForm)
してもdFormのデータが有効にならなかったと思う。
784デフォルトの名無しさん:2006/05/30(火) 01:29:12
今のところ自分は
CForm nextForm = new CForm();
nextForm.setAnyParma(anyparam);
request.setAttribute("cForm", nextForm);
return new CAction().doDisplay(mapping, nextForm, request, response);
とやって重複ルーチンが出来ないようにしてるんだがどうもしっくりいかない。
もっとスマートな解決策を知っている人情報求む。
785デフォルトの名無しさん:2006/05/30(火) 07:19:53
>>783
気がする
だったと思う

やってから言えよ。おまいの書いたことは全部できるよ。

AActionやBActionでActionFormに何か値をセットしても
それはクリアされてしまい、DActionで取り出せない点は注意が必要。
786デフォルトの名無しさん:2006/05/30(火) 19:56:03
そこでS2Strutsですよ。
ボタン押下時のActionと画面表示時のActionを簡単に分けることができる。
787デフォルトの名無しさん:2006/05/30(火) 20:56:51
> AActionやBActionでActionFormに何か値をセットしても
> それはクリアされてしまい、DActionで取り出せない点は注意が必要。

783はまさにこの話
788デフォルトの名無しさん:2006/05/30(火) 21:02:11
> そこでS2Strutsですよ。
> ボタン押下時のActionと画面表示時のActionを簡単に分けることができる。

サンクス。まさにこれを求めてた。
しかしアドインフレームワークが無いと出来ないというのは少々悲しい。
様々なフレームワークで混沌としている当業界の中で、S2Strutsが長生き
してくれれば良いが...
789デフォルトの名無しさん:2006/05/30(火) 21:14:48
>>787
「A画面からC画面にパラメータが欲しい時」の話じゃなかったのか?
790デフォルトの名無しさん:2006/06/03(土) 16:35:20
Strutsってエラーが起きたとき
HTTPステータスの400番,500番台をクライアントに返すことが出来るのでしょうか?
単純にJ2EEAPIのresponse.setStatus(int sc) で大丈夫なのでしょうか?
つーかそのときにマッピングファイルとかにもどり文字を何書きゃいいのかわからん
"error"にしてマッピングしてもエラーページ表示するときはHTTPステータス自体は200番台になるし・・・

内部でどのようになっているのかわからないものでStrutsの想定される使い方以外の事やると心配です
791デフォルトの名無しさん:2006/06/03(土) 19:03:00
>>790
例外を投げたら、struts-config.xmlにglobal-exceptionを指定しない限り、、
勝手に500エラーになったかと。
指定したURLがなければ404エラーになるし。

内部でどのようになっているかは、せっかくソースが公開されているんだから、
読んでみてはいかが?
792デフォルトの名無しさん:2006/06/03(土) 19:07:25
>内部でどのようになっているのかわからないもので
ソースコードは公開されてるぞ。

response.sendError(int sc);でいいだろ。
Actionのexecute()からは return null; だ。
793デフォルトの名無しさん:2006/06/03(土) 19:51:48
>struts-config.xmlにglobal-exceptionを指定しない限り、、
指定されてんだよ既に

>ソースコードは公開されてるぞ。
いちいち見れんもんで聞いている

>response.sendError(int sc);でいいだろ。
response.setStatusがだめな理由は?

>Actionのexecute()からは return null; だ。
信用していいんだな?
794デフォルトの名無しさん:2006/06/03(土) 20:16:15
>いちいち見れんもんで聞いている
見ろよ。回答者はおまいの使いっ走りではない。

>response.setStatusがだめな理由は?
ステータスコードをセットするだけか、レスポンスのフラッシュをするかの違いだ。
そんなことも知らないのか。

>信用していいんだな?
信用できないならやらんでいい。
795デフォルトの名無しさん:2006/06/03(土) 20:30:36
これまたずいぶんと失礼な質問者が現れたな。釣りか荒らしか?
796デフォルトの名無しさん:2006/06/04(日) 02:18:47
ビジネスロジックの意味がわからないよー
797デフォルトの名無しさん:2006/06/21(水) 19:40:30
<html:text property="boke[0]" />
798デフォルトの名無しさん:2006/06/21(水) 19:54:08
(;´Д`)ごめんなさい。途中で押しちゃった
///JSP側////
ボケ1:<html:text property="boke[0]" />
ボケ2:<html:text property="boke[1]" />
//TestAction (ActionForm)//
private List bokes = new ArrayList(2);
//resetメソッドが使えないのでコンストラクタを使う
public TestAction() {
for(int i=0; i<2; i++) {
bokes.add("");
}
}
public List getBokes() { return bokes; }
public String getBoke(int i) { return (String)bokes.get(i); }
public void setBoke(int i,String s) { bokes.set(i,s); }

と、こんな感じなんですが、例えばボケ1にテキストを入力してsubmitして自分自身に
フォワードさせてもボケ1のテキストフィールドには空白が入ってしまうのですが
どうすれば良いでしょうか?Strutsは1.2.9です
799デフォルトの名無しさん:2006/06/22(木) 00:25:25
ボケって・・・w
800798:2006/06/22(木) 19:49:23
よく見たらpropertyがbokesになっててgetBokesしか発動してませんでした
こんな盆ミスで2時間も掛かるなんて_| ̄|○
801ひゃぁ:2006/06/22(木) 20:56:41
663のstruts設定ファイルの<controller>で具体的にどこのことをいうのでしょうか?
802デフォルトの名無しさん:2006/06/22(木) 21:14:10
ぐぐれ
803デフォルトの名無しさん:2006/06/23(金) 14:01:11
このスレで言うことじゃないかも知れんがStrutsは1回やったらもうええかな。
自分はサーブレットプログラムをStruts + Hibernateから入った。
MVCの型を覚えるという点で良かったが、それ覚えたらフレームワーク無しで
組んだ方が効率よいと思う。
804デフォルトの名無しさん:2006/06/23(金) 14:19:03
>>803
言いたいことはわかるが、業務なら他人がよく知っている方法を使うのも重要なこと。
フレームワークを使う意味はそういうところにもある。
805803:2006/06/23(金) 14:27:52
うん、チームでやるならね。
とくにスキルが見込めない人間とやるならStrutsをとるよ。
806デフォルトの名無しさん:2006/06/23(金) 14:50:22
>>805
未来永劫自分でメンテすることを確約するならともかく、
他人がメンテするかも知れないことも考えろよ。
807803:2006/06/23(金) 15:41:33
未来永劫は仕事はないよw
拡張やバグ取りが必要なまで付き合うよ。
てかStrutsで書いたからってメンテナンス制が高いとは思わない。
設定にいろいろ逃がしてあるとソースレベルデバッグで追えない部分が増えるしね。
むしろ人のメンテする身になったらフレームワーク無しのが良いかな。
808デフォルトの名無しさん:2006/06/23(金) 16:06:42
Strutsのメンテナンス性が高いとは思わないが、
他人の自己流設計・自己流実装を解読するのもイヤ。
オリジナルのカスタムタグとか使われると最悪。
Strutsを使っている方が、少なくともVC層に関してはどこで何をやっているのかがわかる。
809デフォルトの名無しさん:2006/06/23(金) 18:01:41
>>808
他人の自己流だけじゃなく、過去の自分の自己流を読み解くのもたいがい大変だしね。

別にStrutsじゃなくてもいいけど、フレームワークなし、って言う選択肢はどうかと思うな。
810デフォルトの名無しさん:2006/06/23(金) 18:16:41
で、知らないフレームワークを調べるよりは知ってるStrutsのほうが楽と。
これだけ普及してるとそういう人が多いので、このような側面がますます強調されることになる。
今となっては、Strutsそのものが優れているとは全く思わないのだが、
普及しているフレームワークを使うことにはそれなりのメリットがあるとは思う。
811デフォルトの名無しさん:2006/06/23(金) 20:14:37
スキルが見込めない人間なら尚更Strutsをやらせるのは
大変じゃないかと思うんだが気のせいか
Struts使うならCの部分だけでいい
まあ、かゆい所に手が届かない場合はカスタマイズしないといけないけど
最近流行?か知らないけど複数のフレームを使ってxmlファイルが増えていくのだけは勘弁
812803:2006/06/23(金) 21:21:45
はー、今、他の誰かが書いたコードレビューしてるが、
もう全部jspにプログラム書いてるのね。
DBの接続から何から何まで。O/RもMVCもあったもんじゃない。
前言撤回するよ(´・ω・`)

自分で作るときは、ちゃんとフォーム送信したのはFormクラスに入れて
Actionクラスで裁くようにしてる。
jspでは、Beanの取り出しだけ。
813デフォルトの名無しさん:2006/06/23(金) 21:34:10
ワロタ
それはフレームワーク云々より共通認識に問題なんじゃないかと
814デフォルトの名無しさん:2006/06/25(日) 01:06:39
>>812
すごいなw
Tomcatとかソースコードの最大ステップ数とか制限があったんだが
大丈夫なのか?
JSPは展開されると偉い行数になるからなぁ。
815803:2006/06/25(日) 01:40:21
ちなみにサーブレットクラスは1個だけあった。
service()関数でrequest.getParameter("MSG")してswith case。
WndProcかよ。
816デフォルトの名無しさん:2006/06/26(月) 22:35:05
JavaWorldに書いてあったんだけど、WebWorkってStrutsに吸収合併されたの?
今後どうなってくんだろう。
817デフォルトの名無しさん:2006/06/28(水) 14:54:49
前スレを見つけたので貼ります。
にくちゃんねるとは違い、dat落ち直前のレス(983)までが収録されています。

△△さらにStrutsの良さを教えて下さいSession3
http://mimizun.com/cgi/dattohtml.pl?http://mimizun.com:81/log/2ch/tech/pc5.2ch.net/tech/kako/1088/10888/1088870989.dat
818デフォルトの名無しさん:2006/07/01(土) 20:57:05
デザイナ不在でプログラマが全部一人で作る場合、Struts導入しても意味無いですか?
819デフォルトの名無しさん:2006/07/01(土) 21:02:08
>>798
>(;´Д`)ごめんなさい。途中で押しちゃった

なんでかしらないが、勃起した
820デフォルトの名無しさん:2006/07/01(土) 21:03:03
>>818
Struts使うか否かの論点は そこではないと思う
821デフォルトの名無しさん:2006/07/01(土) 22:03:58
Struts使うケース
* 多人数開発
- やり方を統一できる
* 期間が半年以上で、Servletプログラミング初心者
- Strutsを覚える期間がある
- ウェブプログラミングでのMVCのありかたを学べる
-- PHPとかにも応用可能。
822デフォルトの名無しさん:2006/07/01(土) 22:24:46
>>818
自身がStrutsに慣れていれば使うがいい。
他のフレームワークに習熟しているのならそれでもいい。
HTMLのサニタイジングやセッション維持のためのURLエンコーディング、TransactionTokenなど、
自分で実装したら結構めんどいから、何かしらのフレームワークは使った方がいいかも。
823デフォルトの名無しさん:2006/07/01(土) 23:03:02
つーか飽きた

struts-config書くの面倒
ActionとActionFormをいやいや継承

誰かRESTアーキテクチャでPOJO的な感じのフレームワーク作ってくれ

ついでにビューはJSPとJSFも飽きたので
JAXB2.0辺りを旨く使って新たなデザイン考えてくれ
824デフォルトの名無しさん:2006/07/03(月) 09:04:25
>>823
自分で頑張れ
825デフォルトの名無しさん:2006/07/03(月) 20:16:23
>>823
そんなあなたにどう?

【Java】Wicket【HTML】
http://pc8.2ch.net/test/read.cgi/tech/1132407308/
826デフォルトの名無しさん:2006/07/15(土) 00:54:55
詳しい皆様に質問です。
検索結果などの一覧表のページから詳細画面に遷移するにしたいのですが
どのように実装すればいいのでしょうか?

たとえばユーザ一覧のページから
ユーザIDのリンクを押したらユーザの詳細画面に遷移するような場合
<html:link action="/UserInfoQueryAction"
でユーザIDを飛ばして、UserInfoQueryActionでそれを取得するには
どのような実装が良いでしょうか?
827デフォルトの名無しさん:2006/07/15(土) 00:59:27
GET使えばいいんじゃね
828デフォルトの名無しさん:2006/07/15(土) 01:03:30
一覧をListで出してるならindex、MapならkeyをActionに投げればいんじゃない?
っていうかStrutsと関係あるのかとふと思った
829デフォルトの名無しさん:2006/07/15(土) 01:08:03
>Actionに投げればいんじゃない?
Actionに投げればいいのはわかるんですが
どうやって投げて、どうやってAction側で取得するのかがわかりません。
すれ違いなら申し訳ないです。
どこで訊けばいいでしょう?
830デフォルトの名無しさん:2006/07/15(土) 21:56:35
Struts使う前に、普通のWebアプリ勉強したほうがよくね?
831デフォルトの名無しさん:2006/07/15(土) 22:00:09
俺もそう思う
832デフォルトの名無しさん:2006/07/16(日) 00:32:29
>>829
http://localhost/search.do?hoge=hage

struts-config
<action path="/search" type="hoge.form.SearchForm" />

hoge.form.SearchForm.java
setHoge(String hoge)
getHoge()

>他
Strutsってこんな感じだっけ
833デフォルトの名無しさん:2006/07/16(日) 15:32:06
画面表示時にリンクにパラメータ埋め込めばいいんじゃないの?
GET嫌いだからhtml:linkとか使ったことないけど。

>Actionに投げればいいのはわかるんですが
>どうやって投げて、どうやってAction側で取得するのかがわかりません。
う〜ん、Struts以前の問題だね。
@itあたりで基本から勉強した方がいいと思う。

答えはもう出てるけど、他でマルチポストとかしないようにね。
すぐにばれて叩かれるよ。
834デフォルトの名無しさん:2006/07/16(日) 17:03:54
>>833
別にマルチなんかしてないです。
余計なお世話どうも
835デフォルトの名無しさん:2006/07/18(火) 11:34:43
Javascriptでパラメータ渡してポストしても良くね?
836デフォルトの名無しさん:2006/07/21(金) 01:26:13
なんかもーStrutsのなにがいいのか
よくわからん。
struts-config.xmlのうっとうしさはなんとかならないのか?
837デフォルトの名無しさん:2006/07/21(金) 20:05:04
>>836
私はS2Strutsで幸せになれました。

>>837
宣伝乙
838デフォルトの名無しさん:2006/07/21(金) 20:17:02
>>837
宣伝ワロタ
839デフォルトの名無しさん:2006/07/22(土) 01:02:51
今時新規でStrutsはねえよなあ。保守案件ばっかじゃね?
840デフォルトの名無しさん:2006/07/22(土) 01:13:21
>>839
新規だと何を使うの?JSF?
841デフォルトの名無しさん:2006/07/22(土) 01:16:36
>>839
2年くらい前からそう言われてたが・・・
JSFの時代って本当に来るのか?
Ajaxとの相性もイマイチだし、リッチクライアント時代にはサーバサイドでイベントドリブンなJSFは過剰機能じゃね?
842デフォルトの名無しさん:2006/07/22(土) 01:25:04
Strutsを使う程度でいいなら代替はJSFでいいと思うよ。
Strutsよりもシンプルだし、Strutsで悩んだいくつかの問題は改善されているし。
JSFならではの高機能(という謳い文句)に過剰な期待は要注意だけど。

とは言ってもぼちぼち使われ始めるのが
JavaEE5対応のアプリ鯖・開発環境が出そろう今年後半から来年じゃない?
843デフォルトの名無しさん:2006/07/22(土) 02:12:53
strutsのカスタムタグの利点がよくわからないです。
struts-html以外は、JSTLで置き換えるとして、
struts-htmlもサニタイジングすれば、普通にHTMLタグを使ってもいいんでしょうか?
<input type="text" value="${fn:escapeXml(myForm.field1)}" />

htmlタグと似て非なる、struts-htmlタグを覚えたり、使わせたりするのが大変です。
<option>とかは、値からselectedつけてくれるので楽だけど。
844デフォルトの名無しさん:2006/07/22(土) 09:54:42
velocity使えばいいじゃない
845デフォルトの名無しさん:2006/07/22(土) 13:06:29
ときにStruts 1.3.0って今どういう扱いなの?
ActionにSpringみたいにset-propertyできるようになるのが魅力だけど
いつまで経っても公式公開されないのは何故?
846デフォルトの名無しさん:2006/07/22(土) 13:39:11
>>845
ちょうど今、dev-ml に流れてきた。
1.3.5にしてもいいか?って聞いてる。

Subject:
Status of 1.3.5
From:
Paul Benedict <[email protected]>
Date:
Fri, 21 Jul 2006 21:30:54 -0700 (PDT)
To:
Struts Developers List <[email protected]>

Is 1.3.5 ready to roll? I think everyone has done a fabulous job. I haven't participated in this release but I've watched the boards to know. So is it ready? -- Paul




---------------------------------
See the all-new, redesigned Yahoo.com. Check it out.
847デフォルトの名無しさん:2006/07/22(土) 14:11:42
>>839
>>840
しばらくの間、新規案件でJSF使いまくった挙句、懲りてStrutsに戻りました。
JSFみたいにいろいろと隠蔽されると気持ち悪いし、原因追求に時間がかかっていかん。
848デフォルトの名無しさん:2006/07/22(土) 14:53:51
>>847
>いろいろと隠蔽されると気持ち悪いし、原因追求に時間がかかっていかん。
まあ、これは新技術が普及するまでは避けて通れない問題だよね・・・
ノウハウ不足とか、標準仕様に無い部分での実装間のバラツキとか。
「こういう場合はこうするものだ」という定石もないから試行錯誤の連続だし。

敬意も込めて、

人柱乙。
849デフォルトの名無しさん:2006/07/22(土) 17:31:43
>>848
Strutsもそういう時期があったのかねえ。

1.0のころはほとんど知らんのだが、そんな感じだったのか?
850デフォルトの名無しさん:2006/07/22(土) 17:42:28
>>849
Strutsの場合は実装=仕様だから
「標準仕様に無い部分での実装間のバラツキ」ってのは無かったけどね。
「定石が無くて試行錯誤の連続」はあったな・・・

Servletが出てきた頃も結構バラツキがあった。

JSFもだけど、EJB3もかなり苦労させられそうな悪寒。。。
851デフォルトの名無しさん:2006/07/24(月) 02:53:29
画面遷移でのformデータの受け渡しについて質問です。
1〜4は間違っていますか?
1.JSPに<html:text〜があれば、submit時にActionFormのsetXXXX()が呼ばれる
2.JSPに<html:text〜があれば、表示時点でActionFormのgetXXXX()が呼ばれる
3.JSPの記述が<input type="text"〜なら、ActionFormは使用しない
4.JSPの記述が<input type="text"〜でも、Action側のrequesut.getAttribute()で値を取り出せる
(Formには入らない)
852デフォルトの名無しさん:2006/07/24(月) 03:06:32
>>851
1. △ setterが無い場合はリフレクションが使われる
2. △ getterが無い場合はリフレクションが使われる
3. × ActionFormにsetterがあればsetterが使われ、無い場合はリフレクションが使われる
4. △ ActionFormにsetterがあればsetterが使われ、無い場合はリフレクションが使われてFomに入る。
   それでももちろん、Action側のrequesut.getAttribute()で値を取り出せる。
853デフォルトの名無しさん:2006/07/24(月) 03:43:19
この時間に即レスありがとう。
<html:text〜 と <input type="text"〜の違いってどこにあるのでしょうか。
setterがあればどちらでもFormにセットされるってことですか。
854デフォルトの名無しさん:2006/07/24(月) 03:57:55
>>853
>setterがあればどちらでもFormにセットされるってことですか。
その通り。リクエストパラメータとして送信されている時点で
カスタムタグかどうかの違いはないからな。

大きな違いは、表示時にgetterが呼ばれるかどうか。
>>851 の2.だな。
855デフォルトの名無しさん:2006/07/24(月) 12:14:13
>JSFの時代って本当に来るのか?
来ないと思う。
Flash/Swing/.NET・・・
いくらでもリッチな選択肢があるのに
今更 JSF かよって感じ。
これから3年くらいはプアなWebアプリを
リッチなやつに作り変える案件ばっかだろう。

単純なものはStrutsとかWicketとか。
そうでないものはFlashなりSwingなりで。
JSFの活躍する場所なんてないよ。
856デフォルトの名無しさん:2006/07/24(月) 12:53:02
>>855
>単純なものはStrutsとかWicketとか。
StrutsつかうぐらいならそこはJSF使うだろ。
857デフォルトの名無しさん:2006/07/27(木) 00:52:09
>>856
Struts経験者は多いけど、JSF経験者はそんなにいない。
858デフォルトの名無しさん:2006/07/27(木) 00:58:25
>>857
Wicketなんてもっといないだろw
859html:checkboxのデータ保持:2006/07/27(木) 12:04:43
struts1.2.9で開発しているのですが、チェックボックスのhidden格納がうまく行きません。

hiddenで保持しなければいけない理由はタブ切り替えのページでして、両方のページ
にチェックボックスがあるためです。
また、一覧の件数によって最大値が変わってくるのも困っている理由です。

Formの型は配列で指定してます。
private String check[];

jspではこんな感じで一覧リストを回している所にhiddenとして保持したいのですが・・。
<logic:iterate id="list" name="AForm" property="list" indexId="idx">

表示部はこんな感じです。
<html:checkbox name="AForm" property="check" indexed="true"/>

よろしくお願いします。
860デフォルトの名無しさん:2006/07/28(金) 00:25:28
フレーム切り替え?
861html:checkboxのデータ保持:2006/07/28(金) 10:31:07
value値をセットしていなかっただけでした。

ありがとうございました。
862デフォルトの名無しさん:2006/07/31(月) 21:27:03
WebSphere5.1で開発をしているのですが、
同一名称のFormBeanを使用しているパッケージを同時に起動させると
最初に読み込まれたパッケージのFormBeanを次のパッケージでも使用しています。
同一サーバー上で起動するパッケージでは、FormBeanの名称を替えないといけないのでしょうか?
863デフォルトの名無しさん:2006/07/31(月) 21:32:41
>>862です。
途中で送信してしまいました。
いろいろググってみたのですが、同一現象の報告は見つかりませんでした。
ご存知の方がいらしたら、よろしくお願いします。
864デフォルトの名無しさん:2006/07/31(月) 21:40:07
「パッケージを同時に起動」とか「次のパッケージでも使用」とかわからない。
WebSphere用語?
標準仕様の用語で質問してくれ。
パッケージと言ったらJavaクラス名のパッケージしか思いつかない。
865デフォルトの名無しさん:2006/07/31(月) 22:28:39
パッケージじゃなくて、プロジェクトでした。
すみません・・・・
866デフォルトの名無しさん:2006/07/31(月) 22:53:34
>>865
アプリケーションサーバの設定で、
異なるアプリケーションでは別々のServletContextを作成するようにする。
WebSphereはよく知らんが、大抵のアプリケーションサーバは
ServletContextを複数アプリケーションで共有するか否かを設定で選択できると思うよ。
867デフォルトの名無しさん:2006/07/31(月) 23:10:09
>>866
ServlerContextの設定ですか・・調べてみます。
起動時の動きを調べてみたところ
DynaActionFormClassで使用するフォーム名をすべてHashMapに取得しているために
そこで同じ名前のFormがHashMapに取り込まれないみたいです。
868デフォルトの名無しさん:2006/07/31(月) 23:23:40
>>867
Tomcatだと、crossContext="true" だったりするのだが。
WebSphereだと・・・わからん。スマソ
869デフォルトの名無しさん:2006/08/14(月) 07:34:06
iterate 詳しく載ってる本ってありますか?
iterate使って画面を表示する方法はのっているけど、
画面からiterateされたフォームのサブミットされたデータを
取り出す方法が載っているものが全然ないです。。
870デフォルトの名無しさん:2006/08/14(月) 10:04:07
setHoge( int i, String str )でセットされるようにしておけば
getHoge( int i )で取れるだろ
871デフォルトの名無しさん:2006/08/17(木) 23:32:13
>>869
オライリーのStrutsクックブックにあったよ。

ちょっと前に実装した。
たしかJSPをこんな感じに書いた。

<logic:iterate name="parentForm" property="nestedFormList" id="nestedForm">
<html:text name="nestedForm" property="bakeratta" indexed="true" />
</logic:iterate>

↓で、下が生成されるhtml。

<input type="text" name="nestedForm[0].bakeratta" />
<input type="text" name="nestedForm[1].bakeratta" />
<input type="text" name="nestedForm[2].bakeratta" />
<input type="text" name="nestedForm[3].bakeratta" />
872デフォルトの名無しさん:2006/08/17(木) 23:37:28
>>871
で、そのフォームの送信を受けるActionFormの実装方法は?
ちょっと想像つかない・・・
873デフォルトの名無しさん:2006/08/17(木) 23:46:19
>>872
ん?
↓文書で説明しようとしてめんどくさくなったのでてきとーに書いた。
setterよりindex番号付きのgetterの方がポイントね。

public class ParentForm extends ActionForm {

private List<NestedForm> nestedFormList
= BakerattaLazyList<NestedForm>();

public NestedForm getNestedForm(int i) {
return this.nestedFormList.get(i);
}

public void setNestedForm(int i , NestedForm child) {
this.nestedFormList.set(i , child);
}
}

LazyListで自動拡張可能なListにしないと
logic:iterateで動的にネストの数が増えた場合に対応できないよ。
874872:2006/08/17(木) 23:47:21
>>873
あ・・・三行目newしてねーし・・・
875869:2006/08/18(金) 08:33:21
>> 873
ありがとう。あとでためしてみます。
クックブックですか。

JAVA 5だ。。
LazyList??
調べてみます。。
876デフォルトの名無しさん:2006/08/18(金) 09:18:50
俺はHashMap使って実装したな
877デフォルトの名無しさん:2006/08/22(火) 05:04:55
>>871 が面白そうなのでやってみた。

nestedFormがスコープにないって言われた。。
struts難しいよ。
878デフォルトの名無しさん:2006/08/25(金) 02:55:07
そだね、むつかしいね。
Strutsって簡単だからって勧められても、
JSPやらServlet知らないのにね。
エラーの意味がさっぱりわからんよ。

>>877
ネストしてある場合、setAttributeの前に、
ちゃんとListにサブFormデータ入れてから、ListをFormに格納して、setしないと、
サブFormを参照しようとしたときに、スコープにないって言われるよ。

Formにsetterつくって、サブFormのデータを突っ込むと、
自動的にListにaddするように作っていたら、これにはまって
ずっと使えなかったよ。

結婚したい。
879デフォルトの名無しさん:2006/08/25(金) 09:39:23
ちょっと待て最後の呟きは何だ
880デフォルトの名無しさん:2006/08/25(金) 09:50:05
>Strutsって簡単だからって勧められても、

ちょっと待て。「簡単だから」って勧める奴なんているのか?
正直めんどいけど、普及しているやり方だから仕方なく
ってのが現状じゃないのか?
881デフォルトの名無しさん:2006/08/25(金) 13:57:58
開発効率が大幅にアップするという理由で広まったはずだが?
882デフォルトの名無しさん:2006/08/25(金) 14:31:44
シンプルなものをちょっと作る場合には簡単
凝ったものをいっぱい作るともうダメ
883デフォルトの名無しさん:2006/08/25(金) 19:35:48
>>882
シンプルなものをちょっと作る場合は、結構めんどくさいと思うのだが・・・。

比較的シンプルなものをたくさん作る場合に威力を発揮すると思われ。
ただし、struts-config.xmlとかが膨らんでしまうわけだがorz
884デフォルトの名無しさん:2006/09/02(土) 13:50:38
【レス抽出】
対象スレ: △△まだまだStrutsの良さを教えてくださいSession4
キーワード: JSF
抽出レス数:49

Struts厨はJSFをライバル視しすぎwwwwwwwwwwwww
885デフォルトの名無しさん:2006/09/02(土) 14:01:53
「ライバル視」という観点がイタい。
886デフォルトの名無しさん:2006/09/03(日) 01:24:27
Struts厨=幕府軍
JSF=薩長連合軍
887デフォルトの名無しさん:2006/09/03(日) 11:22:35
>>886
こういうの見ていつも思うんだが、
2chでwwwwwwとか語尾に付けて幼稚なレスをする奴って
なんでいつも○◎ V.S. ××みたいな二元論で語ろうとするのかね。
用途に合わせて使い分ければいいだろ。
大体いい加減Strutsのアーキテクチャマンセーなんて奴いないよ。

GUIのリッチクライアントをWEBアプリに移植するってのをやってるんだが、
Strutsは複雑なデータ構造とか画面相手には向いてないね。

JSFってこのへんどうなんかね。
まだまだ枯れてないって印象で業務では提案しにくいと
ほとんど触ってもいないのに思っているところ。
888デフォルトの名無しさん:2006/09/03(日) 11:53:46
>まだまだ枯れてないって印象で業務では提案しにくい
ここ1年半ぐらい結構さわってるけど、ほぼその通り。
思想はいい。アーキテクチャもStrutsに比べたらかなりマシ。
でも枯れてないし、やはりアーキテクチャ上の問題もいろいろ・・・
889デフォルトの名無しさん:2006/09/03(日) 12:05:05
>>888
もう少し詳しく。
890デフォルトの名無しさん:2006/09/03(日) 13:12:44
>>887
884≠886                                                    ?
891デフォルトの名無しさん:2006/09/06(水) 00:17:19
rife、grails、appfuseみたいなフルスタックアプリケーションってどうよ?
一部にstruts使ってるみたいだけど。
開発を簡単にするっていうフレームワークの進化の趣旨に沿えば、
こういうのも正当の進化かなーと。

スレ違いだったごめんなさい
892デフォルトの名無しさん:2006/09/06(水) 07:01:04
SAPでも使っとけw
893デフォルトの名無しさん:2006/09/12(火) 02:13:48
一般に公開されているサイトでもStruts使ってるの結構ある?
.doってなってるものはそう?
894デフォルトの名無しさん:2006/09/12(火) 08:54:32
たいていそうだなぁ
895デフォルトの名無しさん:2006/09/12(火) 23:35:29
.doそのまま使うのはよくないな
結構見るけど
896デフォルトの名無しさん:2006/09/12(火) 23:49:51
>>895
え、なんで?
俺が今やってるとこ.doだけど。

JSPを外から見えるようにしてるのはちょっとなぁってのは思う。
897デフォルトの名無しさん:2006/09/12(火) 23:56:33
.do隠しかたわからんぽ。教えてくれぽ
898デフォルトの名無しさん:2006/09/12(火) 23:58:18
>>897
web.xml見た?
899デフォルトの名無しさん:2006/09/13(水) 07:21:05
.asp でやったことあるよw
900デフォルトの名無しさん:2006/09/13(水) 08:51:45
>>899
やりすぎw
901デフォルトの名無しさん:2006/09/13(水) 10:14:55
doって名前もどうかと思うが
変更したからって何かいいことあるとも思えない。
902デフォルトの名無しさん:2006/09/13(水) 10:44:59
>>899
warota
903デフォルトの名無しさん:2006/09/13(水) 20:19:47
>>901
Struts内の脆弱性とかが出たときに多少狙われにくくなる
904デフォルトの名無しさん:2006/09/14(木) 13:47:57
何使ってるかわからないと、相手も手が出しにくくなる (少しだけ)
つーか、他の簡単なとこ狙う

404ページに鯖アプリとバージョン出すのとか論外
905デフォルトの名無しさん:2006/09/14(木) 19:23:52
確かMISUMIのサイトが.doだった。
906デフォルトの名無しさん:2006/09/15(金) 20:04:17
>>903
確かに。

>>904
デフォで出るのとか論外っすよね。
907デフォルトの名無しさん:2006/09/30(土) 22:00:10
というか2はまだか・・・思ったより時間かかったな。
908デフォルトの名無しさん:2006/10/05(木) 22:02:56
ApacheにMVCフレームワークが混在しすぎなんだけど
Struts2とやらは今どのへんに熱い支持を受けてるの?
909デフォルトの名無しさん:2006/10/05(木) 22:57:14
>>908
土木作業員を簡単に集めたいPM。
ほとんどのPMだな。

別に俺が熱い支持をしているわけではないが普通に考えれば
実績で劣るフレームワークを選ぶ理由はない。
910デフォルトの名無しさん:2006/10/07(土) 00:13:25
Strutsは最近では古いアーキテクチャだが
上司に他のを提案しずらいんだよな・・・。
規模や内容的にJava5.0+Wicketとかが本来相応しい案件でも
911デフォルトの名無しさん:2006/10/07(土) 00:57:58
むしろほかのを提案する必要など感じないけどな。
自動生成を含むツール群をすでに整備してあるのは言うまでもないが、
ほかのものにして工数削れるか?バグを減らせるか?というとまったくそういうこともないからな。
912デフォルトの名無しさん:2006/10/08(日) 17:13:53
logic:redirectをJSTLで代用する場合、どんな書き方をしますか。
913デフォルトの名無しさん:2006/10/08(日) 18:46:00
MVCで考えると、むしろあってはならないような気がするけど気のせい?
914デフォルトの名無しさん:2006/10/09(月) 00:05:46
>>913
何の話をしている?
915デフォルトの名無しさん:2006/10/09(月) 00:10:56
VIEWにリダイレクトなんて記述すんな童貞
って意味だと思うよ
916デフォルトの名無しさん:2006/10/09(月) 01:10:18
>>913
そうおもう。リダイレクトするActionを呼べばよいだけだ。
Actionクラスを作る必要はなく、struts-configで定義するだけ。
917デフォルトの名無しさん:2006/10/10(火) 02:04:57
>>915-916
なら理解できるのだが、
だとしたら、なぜlogic:redirectなんてタグをStrutsの開発者は作った(or採用した)のだろう?
918デフォルトの名無しさん:2006/10/10(火) 02:19:49
>>917
アメリカあたりでは、いまだにJSP Model1の需要が結構ある。
日本ほどJSP Model2(いわゆるMVCモデル)への固執が無いらしい。
bean:headerとかbean:parameter、bean:cookie等もその流れだろう。
919デフォルトの名無しさん:2006/10/10(火) 03:20:33
質問なのですが・・・

DBからデータを取得して<multibox>でデータの数だけチェックボックスを作ります。
 □name1、□name2、□name3、・・見たいな感じです。
それからそのデータを元に関連がある所をデフォルトでチェックを付けときたいのですが
どうやればいいんでしょうか?
関連のデータもDBから引っ張ってきます。

<logic:iterate id="Data1" name="Data2" property="List">
  <html:multibox property="id" >
<bean:write property="id" name="Data1" />
  </html:multibox>
  <bean:write name="Data1" property="name" />
</logic:iterate>

只今のソースはこんな感じです。
920919:2006/10/10(火) 05:13:32
コレからどういうふうに書いていけばいいのでしょうか?
関連づかせるためのデータはList2としてDBからひっぱて来てあります。
JSP側の記述の仕方がわかりません。
921デフォルトの名無しさん:2006/10/10(火) 15:51:49
>>918
Actionなしで、JSPだけで記述するということか。

それにしても、MVCモデルをうたっているはずのStrutsでなぜ?
というのが>>917の質問の本質だったりする。

>>919
フォームのidプロパティを配列にして、
チェックを入れたいidをJSPを表示する前に配列に入れておく。
922デフォルトの名無しさん:2006/10/16(月) 20:18:09
taglibの質問ですが、
生成されたHashMapのキー名と値を
jstlで、forEachによりキー名と値を
以下のレスのコードの様に表示したいのすが、その方法をご教示下さい。
923デフォルトの名無しさん:2006/10/16(月) 20:18:15
List<Map<?, ?>> table = new ArrayList<Map<?, ?>>();
Map<String, String> rd = new HashMap<String, String>();
rd.put("c1","a");
rd.put("c2","b");
table.add(rd);
rd = new HashMap<String, String>();
rd.put("c1","aa");
rd.put("c2","bb");
table.add(rd);
こんな感じで生成したHashMapをjspの中で

<table>
 <tr>
  <c:foreEach ・・・>
   <th>c列のキー名<th>
  </c:forEach>
 </tr>
 <c:forEach var="d" items="${table}・・・">
 <tr>
  <c:forEach var = "d">
   <td>r行のc列の値<td>
  </c:foreEach>
 </tr>
 </c:foreEach>
</table>

の様にして以下の用に表示したいです。
c1 c2
a  b
aa bb
924デフォルトの名無しさん:2006/10/16(月) 20:44:58
Map の List にしてるけど
List の List じゃダメなの?
925デフォルトの名無しさん:2006/10/16(月) 22:07:04
>>924
MapのListでは不可能ですか?
ListのListでもかまいません。
926デフォルトの名無しさん:2006/10/16(月) 23:36:54
>>923
スクリプトレット交じりで、小汚いけど。

<table>
<tr>
 <c:forEach var="th" items="<%= table.get(0).keySet() %>">
  <th>${th}</th>
 </c:forEach>
</tr>
<c:forEach var="row" items="<%= table %>">
<tr>
  <c:forEach var="td" items="${row}">
  <th>${td.value}</th>
  </c:forEach>
</tr>
</c:forEach>
</tr>
</table>
行に使うMapは、HashMapだと列順が制御できないから、
LinkedHashMapか、TreeMapなどのSortedMapを使ったほうが良いと思う
927デフォルトの名無しさん:2006/10/17(火) 02:18:30
>>926
ありがとうございます。助かりました。
 列のキー名取得:table.get(0).keySet()
 各値は、取得した行のオブジェクト変数${row}を用いて、
 valueで取得
で対応ということですね。
あと、HashMapも列順が保証されないから、上記の使用では
やめた方が良いということですね。

勉強になりました。
928デフォルトの名無しさん:2006/10/17(火) 09:19:00
Strutsのトランザクショントークンって、CSRFの対策になりますよね?
はっきり書かれたものを見たことがないんですが・・・
929デフォルトの名無しさん:2006/10/17(火) 09:55:15
>>928
なるだろうね。
930デフォルトの名無しさん:2006/10/17(火) 11:14:15
なるにはなる
が、それだけで十分とはいえない、ってどっかでみたことあるな
931927:2006/10/17(火) 19:00:20
>>926のコードを参考にしたところ、
カラム名のところでエラーとなったので、
request.setAttribute("col_header", table.get(0));
とし、
<tr>
 <c:forEach var="th" items="${col_header}">
  <th>${th.key}</th>
 </c:forEach>
</tr>
としたら、正常に表示できました。
932デフォルトの名無しさん:2006/10/19(木) 01:30:42
>>930
過去ログ見たら、理由は書いてないけどそう言ってる人がいました。

普通に対策できてるように見えるけど、何かまずいんだろうか。
ウインドウ複数開けないとかの機能的な問題なのかな?
933デフォルトの名無しさん:2006/10/19(木) 21:48:49
チミたち、JSFを使わないのかい?
934デフォルトの名無しさん:2006/10/19(木) 23:09:58
>>933
選択する事は無いだろうね
935デフォルトの名無しさん:2006/10/22(日) 11:41:30
まともな実装ないし。
936デフォルトの名無しさん:2006/10/22(日) 12:28:56
いまからStruts使うとしたら1.3?
書籍とかでてないから1.2のほうがいいでsか?
937デフォルトの名無しさん:2006/10/22(日) 12:30:40
>>936
勉強なら1.3仕事なら1.2じゃない?
938デフォルトの名無しさん:2006/10/23(月) 00:42:47
>>937

とんくす。1.2しまつ。
939デフォルトの名無しさん:2006/10/23(月) 01:55:41
ibatesのよさも教えてください。
佐賀しても日本語のページがない・・・
なにか良いページ内でしょうか?
940デフォルトの名無しさん:2006/10/23(月) 04:13:02
>>938
すごい心配だ・・・
941デフォルトの名無しさん:2006/10/23(月) 11:11:19
>>936
Struts を使わないという選択肢はないの?
942936:2006/10/23(月) 22:04:08
>>941

あります。wicket検討中です。
わちょーい
943デフォルトの名無しさん:2006/10/26(木) 20:19:54
<html:link>タグで質問させてください。

たとえば↓こういう場合でactionのパラメータにiの値を持たせたい場合
どうやって指定すればいいのでしょうか?Beanなら指定する方法見つけたのですが、
普通の変数だとわかりませんでした。教えてください。

<%
for(int i =0 ; i<10 ;i i++){
%>
<html:link action="/test">test</html:link>
<%
}
%>
944デフォルトの名無しさん:2006/10/27(金) 03:03:01
>>942
Clickは?
あと社内システムならJSFも
945デフォルトの名無しさん:2006/10/27(金) 09:05:46
>>943
struts-el使え
946デフォルトの名無しさん:2006/10/27(金) 12:59:06
>>943
<c:forEach begin="0" end="9" var="i">
<html:link action="/test${i}">test</html:link>
</c:forEach>
947943:2006/10/29(日) 16:17:44
>>945
>>946

できました!ありがとうございました。
948943:2006/11/25(土) 00:59:47
validator-xmlってみんな使ってる?

949デフォルトの名無しさん:2006/11/25(土) 01:10:01
validator-xmlは使ったことないなぁ
950デフォルトの名無しさん:2006/12/09(土) 22:13:00
struts1.2を理解するための良書(和書)といえばなんでしょうか?
951デフォルトの名無しさん:2006/12/11(月) 01:26:18
Struts2.系を待つのか他のフレームワークにいいのあるのか悩み中なんだけど、みんな仕事でどんなの使ってる?
それともまだまだStrutsが主流なのかなぁ?
952デフォルトの名無しさん:2006/12/11(月) 01:37:41
>>951
一応ライブラリは1.2なのだが新機能をほとんど使ってないので事実上1.1かも・・・。
953デフォルトの名無しさん:2006/12/11(月) 01:39:29
StrutsよりWebサービスじゃまいか?
954デフォルトの名無しさん:2006/12/11(月) 01:40:12
>>951
Seaser便利だったお
955デフォルトの名無しさん:2006/12/11(月) 01:52:28
DI興味深々
956デフォルトの名無しさん:2006/12/12(火) 20:04:46
URLClassLoaderめちゃめちゃ重いんですけど・・・。
そんなものですかね?
ClassLoader lo = new URLClassLoader(new URL[]{
new URL("file://C:/・・・/classes/"),
new URL("file://C:/・・・・・/classes/")
}, null);


Class clazz;
clazz = lo.loadClass("classload.Test");
957デフォルトの名無しさん:2006/12/13(水) 00:52:08
BEA Workshop Studio または for Struts っていいなぁ
958デフォルトの名無しさん:2006/12/13(水) 09:14:38
何がいいんだね?
959デフォルトの名無しさん:2006/12/16(土) 13:03:24
hosu
960デフォルトの名無しさん:2006/12/16(土) 14:20:03
大体今時すとらっつなんて(ry
961デフォルトの名無しさん:2006/12/22(金) 23:41:49
>>960
まぁ良くも悪くも標準だから。
しかしすとらっつすら難しいとか平気なツラして
ほざく奴が本当うようよいるからな。
金もらう資格ねーっての。
962デフォルトの名無しさん:2006/12/23(土) 00:12:51
Strutsは十分難しいだろ。
963デフォルトの名無しさん:2006/12/23(土) 00:16:17
難しいっつうか面倒くさい。
964デフォルトの名無しさん:2006/12/23(土) 01:37:35
すとらっつが標準ってことは無いだろうー
つーかクライアントがJSPとかってありえねーだろー
って既に5年以上前に思ってたけどいまだにすとらっつかよーw
965デフォルトの名無しさん:2006/12/23(土) 09:14:36
Strutsを簡単みたいに言うのは
Strutsの表面的な部分しか触っていない翔子
966デフォルトの名無しさん:2006/12/23(土) 11:49:58
じゃあ、何がいいの?
967デフォルトの名無しさん:2006/12/23(土) 12:02:32








しょ



968デフォルトの名無しさん:2006/12/23(土) 14:05:27
最近はDIコンテナ導入する機会が増えてきたんだけど、みなさんWebの部分には何使ってます?
DIコンテナ入れてもその辺は結局まだまだStruts、ってな感じなんですかね?

まぁ個人的にいいな、と思ってても実績が・・・とか使える人が・・・みたいな話になって結局Strutsってパターンが多そうだけど。
969デフォルトの名無しさん:2006/12/23(土) 15:01:35
Struts使える(使いこなせる)香具師もそう多くは無かろう
結局、自分で選択するのが億劫なのを適当な理由をつけて正当化しているに過ぎないのさ
970デフォルトの名無しさん:2006/12/23(土) 17:17:28
Struts2まだー
971デフォルトの名無しさん:2006/12/23(土) 18:21:17
業務アプリならJSFでいいんじゃね?
972デフォルトの名無しさん:2006/12/23(土) 23:11:34
ないな。自動生成等で固めたstruts+jspと比べて生産性があるとは思えん。
973デフォルトの名無しさん:2006/12/24(日) 19:57:34
個人的にはstrutsとJSFならJSFの方が生産性高いけど。
ただしIBMのな。
974デフォルトの名無しさん:2006/12/24(日) 21:34:45
まあ、WASは売れてるだけのことはあるな。
975デフォルトの名無しさん:2006/12/24(日) 21:37:33
単なる右へならへだろ
976デフォルトの名無しさん:2006/12/25(月) 00:51:07
>>973
IBMのJSF実装がってこと?
MyFacesはいまいちなんかね、噂を聞いた限りでは。

今までTigerだったのに
Java2になる前から存在するシステムのメンテだぜ、仕事が・・・
StrutsでいいからWEBアプリに戻りたい。
977デフォルトの名無しさん:2006/12/25(月) 12:01:21
>>968
SpringMVC + Velocity でやってみた。
これでいいかなって感じ。
客先からWebでって言われたら、俺はこれで行く。

Web ってどうせガリガリ書くことになるんで
なるべくシンプルなやつが良いと思う。
JSTL とか使うといろいろ出来そうで
結局かゆいところに手が届かない。
JSF とかはもうただの暗号だよ。

もっともWebもどうかと思うけども。
リッチクライアント + WebService が一番バランス取れてる。
978デフォルトの名無しさん:2006/12/25(月) 21:29:40
velocityは結構分かりやすいよね
979デフォルトの名無しさん:2006/12/26(火) 05:30:11
JSFって何かフレームワークと依存してしまっていて、気軽に使えない。
strutsにしろseasar系のフレームワークにしろフレームワーク内の依存関係が強すぎて、
一部の機能だけ取り出して使うってのが、気軽にできないのが、凄くイヤ。

SWTでweb側で作った資産を流用ってやってるけど。
クライアントアプリなのにservlet.jar同梱とか何が何だかの状態になったりorz
980デフォルトの名無しさん:2006/12/27(水) 00:04:00
それは逆切れじゃないの?
981デフォルトの名無しさん:2006/12/27(水) 02:51:36
>>979
>JSFって何かフレームワークと依存してしまっていて、気軽に使えない。
JSFってそういうもんでねーの?
もともとツールのサポートを前提とした作りだと思っていたけど。
気軽に使えるかどうかはまだ嬲り回してないのであんまり言えない。

なんか細かいところが隠されていて気持ち悪いってのは何となくわかる。


つーかWEBに依存するようなライブラリをクライアント側で
使いまわそうとしているところに駄目駄目感を感じる・・・
ServletAPIに依存したところとStandAloneで動かせるところを
適切に分離できてないんじゃないの?

画面の部品周りにゴチャゴチャロジック書いて
滅茶苦茶保守性が悪い、テストがしにくい化け物みたいなのを作り上げた人が
同じようなことを言っていた。
982デフォルトの名無しさん:2006/12/27(水) 17:41:18
> JSFって何かフレームワークと依存してしまっていて

依存していないから、EJBでもSpringでもSeasarでも自由に組み合わせられるわけで。
983デフォルトの名無しさん:2006/12/27(水) 17:55:28
なんだか話がずれてるぞ
984981:2006/12/27(水) 20:56:17
あ〜なんか話がずれている気がする。
>>979氏の言うFWってJSFに対する各ベンダーの実装のことだよね???
文脈からして。

>>982
その場合のFWって何を言っています?
その言い方だとStrutsでもその親戚の皆さんもみんな
EJBやらS2やらを組み合わせられるって話になりますよね?

でもStrutsは確かに飽きたなー
なんか画期的なやつ誰か考えとくれ!!!
985デフォルトの名無しさん:2006/12/28(木) 01:56:52
>>984
つRails
986デフォルトの名無しさん:2006/12/28(木) 02:02:44
>>985
実務としてあるん?
987デフォルトの名無しさん:2006/12/28(木) 02:17:37
俺の隣の部署がRailsで作ってた。
短期開発にはうってつけだな、あれは
988デフォルトの名無しさん:2006/12/28(木) 02:26:19
>>987
情報d

始まってるんだ、いいなぁ
開発サポート言語位でしか使われてないのかと思ってた
んじゃ勉強本腰いれるかな
989デフォルトの名無しさん
Groovy版のGrailsとか、Java5対応のTrails,Sailsあたりなら、
現行、Java:Tomcat,Strutsな環境とも共存できそうなんだけどどうだろう?