フレームワークStrutsをいじくり倒す人の為のスレ
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
03/04/28 08:14ID:Ub0n1fGRhttp://www.ingrid.org/jajakarta/struts/
http://jakarta.apache.org/struts/
0580nobodyさん
04/10/19 19:28:16ID:biz4bNlUstruts-config.xmlは以下のような感じです。InitUserInfoで前処理を
して、reguserinfo.jspを呼び出したいです。
<action-mappings>
<action
path="/InitRegUserInfo"
type="actions.InitRegUserInfo">
<forward name="success" path="/pages/userinfo/reguserinfo.jsp" />
</action>
</action-mappings>
0581nobodyさん
04/10/19 19:31:52ID:???> Actionクラスも作って、successを返したらJSPページ
> にforwardするように設定したつもりが、
つもりだから。
0582578
04/10/19 19:48:00ID:???HttpServletRequest requestとするべきところが
HttpServlet requestになってました。
これで半日悩んだおれって馬鹿だと痛感しました。これから進めそうなの
でがんばります。
それにしてもエラーメッセージが出てくれないミスってきついですね。
0583nobodyさん
04/10/19 20:45:17ID:???J2SE5使って、executeメソッドの前に@Override付けろ。
ちゃんと検出してくれる。
ただしXDocletが使えなくなる罠。
0584nobodyさん
04/10/19 22:43:54ID:qwXtDXVhすげーワラたよ。
0585uncorrelated
04/10/20 11:08:39ID:OHS9yskl0586nobodyさん
04/10/20 11:10:45ID:???0587nobodyさん
04/10/20 14:59:22ID:???0588nobodyさん
04/10/20 15:08:03ID:???0589nobodyさん
04/10/20 15:18:51ID:???0590nobodyさん
04/10/20 17:23:55ID:???0591nobodyさん
04/10/20 19:36:11ID:???0592nobodyさん
04/10/20 19:55:10ID:???0593nobodyさん
04/10/20 22:49:06ID:???0594nobodyさん
04/10/20 23:31:44ID:???0595nobodyさん
04/10/20 23:37:24ID:???http://www.amazon.co.jp/exec/obidos/tg/detail/offer-listing/-/B00005GL98/used/ref=olp_tab_used/250-8633275-5102657
0597nobodyさん
04/10/21 00:32:47ID:???0598nobodyさん
04/10/21 11:18:57ID:???行っていましたが、
FormBeanをいちいちコーディングしなくてもいいバージョンのStruts(1.1以降のバージョン?)で
文字列のエンコーディングとかはstruts-config.xmlの中で設定とかはできるのでしょうか?
0600598
04/10/21 13:53:19ID:???×:設定とかはできるのでしょうか?
○:設定できるのでしょうか?
0601nobodyさん
04/10/21 19:25:59ID:???それと、FormBeanはいちいち作るべき。
EclipseやNetBeansその他のツールでセッター・ゲッターは自動生成できる
それに比べればxmlで書くほうがめんどうで、メリットもない。
0602nobodyさん
04/10/21 22:59:31ID:???>それに比べればxmlで書くほうがめんどうで、メリットもない。
そうでもないでしょ
setter&getterは確かに自動生成できるかもしれんが
XML設定だけでformBeanが管理できるstruts1.1の方が断然管理しやすい
0603nobodyさん
04/10/21 23:02:46ID:???エンコーディングはTomcatについてるSetCharacterEncodingFilter.javaを使うのが普通かも(違うかも)
使い方は>>601の言うとおりweb.xmlにfilterの設定を追加して、すべてのリクエストにマッチさせればOKかな。
サンプルはウェブに転がってると思う(Tomcatにも付いてる)
0604nobodyさん
04/10/21 23:04:25ID:???DynaActionFormはTypeSafeじゃないから、そのツケがそのうち回ってくると思う。
0605nobodyさん
04/10/21 23:06:35ID:???0606nobodyさん
04/10/21 23:06:40ID:???>それと、FormBeanはいちいち作るべき。
>EclipseやNetBeansその他のツールでセッター・ゲッターは自動生成できる
>それに比べればxmlで書くほうがめんどうで、メリットもない。
考え方が古いな。
まあ、それで本当にDynaBean使うより工数が減るのなら、逆に大したもんだ。
0607nobodyさん
04/10/21 23:08:15ID:???そういうポリシーがあって、あえてFormBean作るのなら問題はないけどね。
>>601みたいな「俺はこっちの方が慣れてるんだ」的な理由ではどうもね。
0608nobodyさん
04/10/21 23:24:45ID:???工数減ると思うよ。
Dyna使うとプロパティ名やプロパティの型がコンパイル時にチェックできないから
テストやデバッグで余分な工数がかかるのは容易に想像できる。
DynaだとXDocletでのvalidator.xmlの自動生成にも対応できないし。
考え方が古いのは606じゃないの?Struts1.1b2の頃(約2年前)には
606みたいなこと言う人はたくさんいたけど。
0609nobodyさん
04/10/21 23:35:17ID:???どうも無駄なコードを沢山書いているように見えてしょうがない。
0610601
04/10/21 23:39:16ID:???struts-config.xmlとかvalidator.xmlはXDocletが生成してくれるから、管理はBean.javaだけでいいし。
0611nobodyさん
04/10/22 00:00:11ID:???これが最強とか最高とかはないだろ。
どっちにもメリット・デメリットはある。
ム板のこのテの議論はどれもリスキーシフトまっしぐらだな。
0か1かハッキリしなきゃ死ぬのか。そんなに二進数が好きか。
0612nobodyさん
04/10/22 00:01:02ID:???ステップ数という概念をオブジェクト指向言語に持ち込む時点でアタマ相当古い&堅いね。アンタ。
インタフェースと実装を分ける設計とか抽象クラスを作成するのもステップ数稼ぎの無駄なコードとか言われたりしてw
0614nobodyさん
04/10/22 00:24:01ID:???自分の情勢が不利になると一般論を持ち出すんですね。
XDocletが現れて、DynaFormBeanのメリットはほとんどなくなって、デメリットがめだつようになったんだけどね。
0615nobodyさん
04/10/22 00:38:12ID:???もっと役に立つ話でも書いてくれ。
こういう議論は飽きるほど見てきたからもう十分。
0616nobodyさん
04/10/22 00:42:24ID:???株ロボコンテストのサイトはStrutsで動いてる
0617nobodyさん
04/10/22 01:19:09ID:???自分に不利な結論がでると、役に立たない話だったことになるんですね。
しかも、勝ち負けの話じゃない、といいながら「勝ちでいいから」と。
0か1かハッキリしなきゃ死ぬのは自分のことじゃないか。
2つの手法があって、どっちがいいのかという話は、宗教論にならない限りは役に立つと思うんだけどね。
0619nobodyさん
04/10/22 02:48:39ID:???0620nobodyさん
04/10/22 02:50:00ID:???0621nobodyさん
04/10/22 03:07:18ID:???0622nobodyさん
04/10/22 03:17:48ID:???0623nobodyさん
04/10/22 03:27:23ID:???0624nobodyさん
04/10/22 05:04:53ID:???0625nobodyさん
04/10/22 06:30:35ID:???0626nobodyさん
04/10/22 08:52:47ID:???みんながDyna、ダイナと騒いでいた2年前と今ではIDEの普及率に大きな開きがある。
アクセサを書かなくていい、というメリットは現在では無いに等しくなった。
極論すれば、EclipseがDynaFormBeanの存在価値を消した、ということか。
0627nobodyさん
04/10/22 09:27:02ID:???struts-config編集ができるだけのStrutsツールも無用になったし。
ま、「時の流れが」ってことだね。
0628nobodyさん
04/10/22 09:36:12ID:???0629nobodyさん
04/10/22 09:51:25ID:???どこにXDocletを使わない理由が?
0630628
04/10/22 10:23:23ID:???いや、正直使ったことなくて一通りサラッと調べてみたんだけど
俺にはメリットが理解できなかったもんで
XDoc童貞な俺にやさしい解説おながいしますエロい人
0631nobodyさん
04/10/22 10:53:26ID:???XDocletの利点
・xxx.javaだけをいじればいい
struts-config.xmlやらvalidator.xmlを記述する必要がない。
・クラス名の記述が必要ない
FQNを正確に入力するのは結構めんどくさい。
・複数人で同時にstruts-config.xmlをメンテするときの問題が少なくなる。
CVS使ったとしても、コンフリクトしたときは手作業
これが一番のメリット。
デメリット
・最新に即時対応しない
けっこう困る。
いまでも正式版は1.1まで。
1.2が使いたければXDoclet1.2RCを使う。
・struts-configの知識が必要ないわけはない
・集中管理ができなくなる。
でも、集中管理って必要?
・antが必要
ま、Tomcatで開発するならコンテキストの再起動するのにAnt使った方が便利だし。
0633nobodyさん
04/10/22 12:42:57ID:???XDocletはどっかに解凍。
<target name="xdoclet.struts">
<taskdef classname="xdoclet.modules.web.WebDocletTask" name="webdoclet">
<classpath>
<fileset dir="${dir.xdoclet}/lib" includes="*.jar"/>
<fileset dir="${dir.tomcat}/common/lib" includes="*.jar"/>
<fileset dir="${dir.web}/WEB-INF/lib" includes="*.jar"/>
<pathelement path="${dir.web}/WEB-INF/classes"/>
</classpath>
</taskdef>
<webdoclet destdir="${dir.src}" excludedtags="@version, @author, @todo"
force="true" mergedir="${dir.merge}" verbose="false">
<fileset dir="${dir.src}">
<include name="**/*.java"/>
</fileset>
<deploymentdescriptor destdir="${dir.web}/WEB-INF" servletspec="2.4"/>
<strutsconfigxml destdir="${dir.web}/WEB-INF" version="1.2"/>
<strutsvalidationxml destdir="${dir.web}/WEB-INF"/>
</webdoclet>
</target>
こんな感じのスクリプト動かす。
dir.xdoclet XDocletを解凍したところ
dir.tomcat Tomcatのベースディレクトリ
dir.src ソースの場所
dir.merge マージファイルの場所
dir.web 生成先
version="1.2"とかservletspec="2.4"が使えるのはXDoclet1.2RCからだから、どっかから拾ってきやがれ。
ム板のXDocletスレへでも逝け。
あとはググれ。
0634nobodyさん
04/10/22 14:01:17ID:???理解できればメリットがわかるんだろうけど漏れにはむりぽ_| ̄|○
0635nobodyさん
04/10/22 15:03:06ID:???/**
* @struts.action
* name="inputForm"
* path="/input"
* scope="request"
* input="/input.jsp"
* validate="true"
* @struts.action-forward
* name="success"
* path="/index.jsp"
*/
public class InputAction extends Action {
みたいな感じで書いて、あとは>>633のantスクリプト走らせるだけ。
0637nobodyさん
04/10/22 19:17:20ID:???tp://www.itmedia.co.jp/enterprise/0404/26/epn01.html
0638nobodyさん
04/10/23 14:22:29ID:???チェックボックスを各行の先頭につける一覧を表示しているのですが、
Actionの中でcheckboxの選択有無の判定がうまくいきません。
今はFormの中でチェックボックスプロパティを配列形式で宣言していますが、
選択したチェックボックス分のvalue値しか配列に格納されず、
配列の長さから「いくつチェックボックスを選択したか」しか判定できません。
チェックされないものは排除されてしまいます。
各行でチェックされたものとされないものの判定をする
いい方法はありませんでしょうか。
なお、JavaScriptで選択されてないチェックボックスのValueに
何かしらの値をセットして、選択されたものとの区別を測るという方法以外で。
JSPとForm,ActionFormの中でできる判定方法はないでしょうか?
0639nobodyさん
04/10/23 14:48:24ID:???0640nobodyさん
04/10/23 15:26:38ID:???0641638
04/10/24 11:10:44ID:???各行のFormを、それ自身のFormに配列形式で格納していくという方法でできました。
Form配列から一行分ずつのFormを取り出し、チェックボックスを判定。
各行のFormに含まれるチェックボックスのProperty変数は配列形式ではないので、
選択されていなくても変数のデフォルト値で判定可能というわけです。
>>640
multiboxも調べてみましたが、
チェックボックス以外の機能も含めてプログラム全体として考えると
自分の意図するものと少しずれていたので、今回はその方法はとりませんでしたが、
有益な情報サンクスです。
0642nobodyさん
04/11/08 00:14:18ID:Xgp3rIIQ取得したいと考えているのですが、何方かアドバイスいただけませんでしょうか?
選択している要素の取得方法はなんとなく分かるのですが、選択可能な要素を全て取得する方法が思いつきません。
出来ればJavaScriptは使わない方向で考えているのですが...
よろしくお願いいたします。
0643nobodyさん
04/11/08 00:17:56ID:???0644nobodyさん
04/11/08 00:24:59ID:???なんかよくわかんないが…
<select 〜>
<option value="value1">str1</option>
<option value="value2">str2</option>
…
</select>
の(value1,str1),(value2,str2)…みたいのが欲しいって事?
だとすれば、そもそも、そのフォームをVする際のMにその情報が有るでしょ。
それにアクセスすれば良いんじゃないの?
0645nobodyさん
04/11/08 00:27:48ID:???JavaScriptでhiddenタイプの変数として、カンマとかで値を結合して渡すとかは
思いついたのですが、もっと楽な方法があるだろう...と。
0646nobodyさん
04/11/08 00:33:22ID:???レス、ありがとうございます。
<SELECT>の要素は画面で追加・削除が行えるようにJavaScriptで組んでいるため、
<OPTION>の内容や数は変わることが前提となっているのです。
先ほど645で書いた方法程度であれば何となく考えているのですが、
何かございませんでしょうか?
0647nobodyさん
04/11/08 01:23:50ID:???0648nobodyさん
04/11/10 11:25:30ID:???<logic:iterate〜で、Beanに設定したテキストボックスの初期値は、正しく表示されているのですが、
テキストボックスの値を変えてsubmitしても、Actionで入力値が取得できません。
なにか思いつく原因などがあれば教えてもらえないでしょうか?
よろしくお願いします。
0649nobodyさん
04/11/10 14:33:28ID:qbk8LNSWよろしかったらもうすこし具体的にやり方を
教えてもらえないでしょうか。
今同じような事をやってつまっております。
0650nobodyさん
04/11/10 23:25:11ID:???やり方は2種類。
前提として、BeanにString id、String nameっていうフィールドがあるとして。
1. フィールドの配列で受ける。
<logic:iterate id="bean" 略>
<html:text name="bean" property="id"/>
<html:text name="bean" property="name"/>
</logic:iterate>
こういうJSPを書いて、この値が入るActionFormのフィールドに
String[] id と String[] name、およびそれぞれのアクセサメソッドを
用意しておけば、上から順番に値が格納される。
2. Beanの配列で受ける
<logic:iterate id="bean" 略>
<html:text name="bean" property="id"indexed="true"/>
<html:text name="bean" property="name"indexed="true"/>
</logic:iterate>
こう書いておいて、ActionFormにBeanの配列(もしくはList)と、
setBean(int index) を用意しておけば、Beanの配列として値が入る。
0651nobodyさん
04/11/11 05:13:30ID:hiuJkdtgstrutsのViewの部分をVelocityで実装してみるのは
有効なんですかね?
0652nobodyさん
04/11/11 05:23:51ID:???JSPとVelocityの違いは、XMLタグで制御構造を書くかそうではないかだけかと。
オーサリングツールが使いにくいとかブラウザでのプレビューがやりにくいとかじゃなければ、JSPの方がいいと思われ。
タグファイルとか考えると、JSPの方が便利だし。
0653649
04/11/12 14:00:22ID:???やり方としてはデータ用に作成したbeanの中に
indexを持たせてsubmit時にindexの値の配列を取得して
その他フィールドの値をindexをキーにして取得しています。
他にいい方法があれば教えてください。
やりたいことは、下記の通りです。
検索条件に従ってデータベース検索して結果を一覧表示する。
この際、各行にチェックボックスを作成する。
submit時にチェックボックスにチェックが入ったデータのみを
対象にある処理を行なう。
0654nobodyさん
04/11/23 00:13:58ID:???{0} が含まれている場合に
その {0} を入力された文字列に置き換える方法はないでしょうか?
たとえば、「入力された値は {0} ですが、その値は無効です。」とかいう
メッセージを表示したいのです。
書籍や Web サイトなどでは、固定文字列に置き換える方法ばかりしか見かけないので・・・。
0655nobodyさん
04/11/23 03:25:21ID:???試してないし君のValidatorのコードもわからないので適当書く。
たぶんActionErrors(ActionMessages)に
ActionError(ActionMessage)を追加してるところがあるとおもうけど、
後者は特にResources.getActionError()で取得する必要はなくて
ActionError(ActionMessage)でさえあればいい。
0657nobodyさん
04/11/23 11:22:18ID:???0658654
04/11/23 15:55:19ID:???それでは不可能、ということなんですね。
ありがとうございます。
0659nobodyさん
04/11/27 21:22:47ID:???ActionForm の代わりにPOJOを用いる方法を書いてるが、
こっちのスレの住人は使ってるのかな?
0660nobodyさん
04/11/29 21:50:18ID:???保守する身にもなってくれ。
0661nobodyさん
04/12/01 00:29:13ID:???0662nobodyさん
04/12/01 02:32:32ID:???0664nobodyさん
04/12/01 02:46:08ID:???DynaValidatorActionだといいの?
>>663
△△さらにStrutsの良さを教えて下さいSession3
http://pc5.2ch.net/test/read.cgi/tech/1088870989/
0668nobodyさん
04/12/02 12:22:43ID:???フィールド定義して、右クリックしてツールにセッターゲッター生成してもらって、XDocletタグを書くだけ。
あまりめんどくさくない。
0669nobodyさん
04/12/02 20:36:12ID:???いろいろそれ用の設定も必要だし
前準備だけでめんどくさいです
0670nobodyさん
04/12/02 20:47:10ID:???それなら、Struts使う必要もあまりなさそうだけど。
0672nobodyさん
04/12/04 02:23:43ID:???0673nobodyさん
04/12/04 15:46:09ID:???できますか?
@struts.actionと@struts.action-forwardを一つのクラスに複数個書いてみたら、
actionが複数できることは確認できたのですが、action-forwardが両方のactionの中に
入ってしまい、期待した動作はしませんでした。
みなさん、こういう場合ってどうしてますか?
それとも、一つのアクションクラスを使い回すってのがマズいんでしょうか?
0674nobodyさん
04/12/04 19:54:03ID:???マスタメンテとか一覧とか、共通のActionを使うことは多いと思う。
その場合は手書きになるね。
基本的にXDocletはシングルトンなクラスとValueObjectにしか適用できない気がする。
0675nobodyさん
04/12/11 02:21:47ID:???ビジネスロジックだけ分離させてそれを各アクションで呼べばいいだけだろ?
もしかしてActionクラスに処理べた書きか?
おまえらStrutsのこと全然わかってなさすぎ
@ITの山田と同レベルだな
0677nobodyさん
04/12/11 14:35:35ID:???ひょっとしてアクションクラスはクラスはModelだと思ってるの?
そうじゃなきゃそんな発言しないよね。
Controllerだと知ってたらそんな発言しないよね。
0678nobodyさん
04/12/11 20:35:55ID:???■ このスレッドは過去ログ倉庫に格納されています