フレームワークStrutsをいじくり倒す人の為のスレ
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
03/04/28 08:14ID:Ub0n1fGRhttp://www.ingrid.org/jajakarta/struts/
http://jakarta.apache.org/struts/
0500492
04/09/11 11:14:18ID:???<html:text name="hogeForm" property='<%= "_dataList[" + i + "].key1" %>' />
の様な書き方をすると、取得は出来るようですが、
セットする場合、に_dataListがnullになっているのでセット出来ないと
言っているのではないかと思います。
そこで、Submitした後も_dataListをnullにならない様にしたいのですが、
何か良い方法は無いのでしょうか?
ご存じの方、ご教授下さい。
よろしくお願い致します。
0501nobodyさん
04/09/11 13:31:55ID:???設計を変えたほうがいいよ。
0502492
04/09/11 14:00:05ID:???Strutsではこういう使い方は出来ないと言うことでしょうか?
設計を変えるとしたら、どう変えるのが理想的でしょうか?
0503nobodyさん
04/09/11 14:01:10ID:???List型のプロパティに値をセットするときは、セットする前に
リストの要素を用意しておく必要がある。
方法はいろいろあるが、俺はActionFormのreset()メソッド内で
リストの要素を用意しておくことが多いかな
0505nobodyさん
04/09/11 14:21:43ID:???そりゃそうだろう。
0507492
04/09/11 16:22:58ID:???resetメソッド内で事前にセッションにセットしたリストを取得する様にしてみました。
if (_dataList == null) {
HttpSession session = request.getSession();
List list = (List)session.getAttribute("hogeList");
_dataList = list;
}
すると例外は出なくなりましたが、
TEXTフィールドに入力した値がセットされません。
JSPのproperty='<%= "_dataList[" + i + "].key1" %>'の部分の書き方が悪いのかな?
というところまでは分かるのですが、どう変えたら良いのでしょうか?
何度もすみませんが、よろしくお願いします。
0508+++
04/09/11 23:14:45ID:???とりあえず"dataList[0].key"の形でrequest.getParameterに入ってくるので、
それを読むか。
通常こういう場合、
<logic:iterate id="data" name="hogeForm" property="_dataList">で回して、
<html:text name="data" property="key1" indexed="true" />じゃあないかと
思うんだけど。結果は変わらないけど。
0509nobodyさん
04/09/12 09:58:09ID:???表示(初期化)のためのActionの中で必要な情報をcollectionに詰めて、formにsetすりゃいいだけじゃん?
0510nobodyさん
04/09/12 10:16:59ID:???ActionFormがrequestスコープの場合はダメ。
毎回のリクエスト受信時にActionFormのインスタンスは新たに生成され、
初期化処理で扱うActionFormのインスタンスと送信後に扱うActionFormのインスタンスは別になるから。
0511nobodyさん
04/09/12 20:53:02ID:???送信先で同じActionFormを使ってやりゃいいだけじゃん。
0513492
04/09/13 09:40:19ID:???そうなんです。
>>509の方法だと、Listがnullになってしまうんです。
だから、property='<%= "_dataList[" + i + "].key1" %>'の書き方だと、
_dataList[0].key1という名前になり、それをActionSetvletか何かで、
_dataList.get(0).put("key1","hogehoge")というようなメソッドを呼んでると思うのですが、
_dataListがnullだからNullPointerExceptionが出るのだと思います。
0514492
04/09/13 10:35:16ID:???ありがとうございました。
結局、現在はActionFormに以下のソースを追加しました。
private String[] key1 = null;
private String[] key2 = null;
public String[] getKey1() {
return key1;
}
public void setKey1(String[] k) {
this.key1 = k;
}
public String[] getKey2() {
return key2;
}
public void setKey2(String[] k) {
this.key2 = k;
}
画面表示時は、以下の様にしてListの内容を出力し、
<logic:iterate id="list" name="hogeForm" property="_dataList">
<html:text name="list" property="key1" />
<html:text name="list" property="key2" />
</logic:iterate>
ActionFormにセット時はString配列にセットする様にして
処理しています。
でも、このやり方は邪道だと思っています。
もし他に良い方法がありましたらご教授下さい。
0515nobodyさん
04/09/13 22:16:56ID:uejohbjj何か弊害ありますか?
0517nobodyさん
04/09/13 22:31:27ID:uejohbjj0519nobodyさん
04/09/13 23:40:40ID:???モジュール化をするかしないかの違いでしかないの?
もうちょっと説得力のある理由があるのかとおもった。
そのAction固有のロジックで複雑でもなければとりあえずそこに書いといて、
必要になったときにリファクタリングで括りだす方針でも問題ないような。
Actionはシングルトンだから書けないロジックもあるのはわかるけど。
0520nobodyさん
04/09/14 08:03:53ID:???0521nobodyさん
04/09/14 21:28:50ID:???MVCの利点が理解できなきゃこれも理解できないだろうけど。
0522nobodyさん
04/09/14 21:46:02ID:???http://struts.apache.org/userGuide/building_controller.html#action_design_guide
0524nobodyさん
04/09/14 22:41:16ID:DrU+5VXTそのあとActionから抜けるまで使いまわすようなフレームワーク作ってるんですけど
どうしたらいいですか?
Actionクラスのメソッドの引数にconnとかがあります!
0526nobodyさん
04/09/14 22:52:17ID:DrU+5VXT0527nobodyさん
04/09/14 23:27:05ID:???Action の最初と最後をトランザクション境界にしてるんだろ。
違うのか? それはそれでありだと思うが。
ただ、Action クラスを継承して作ってんだったら、その先輩はうんこかな?
RequestProcessor を拡張し、コネクションは ThreadLocal から取得する
ようにしたほうが良い。Action のインタフェースも変える必要はない。
もちろん、この Action をモデルとして考えた場合の再利用性は低くなる。
が、プロジェクト内での再利用性は十分だし、開発効率も高い。
0528nobodyさん
04/09/16 00:01:38ID:???0529nobodyさん
04/09/17 00:11:06ID:UID/DeJQそういう構成ってどう思いますか?
0531nobodyさん
04/09/17 00:50:37ID:UID/DeJQ*.doに仕掛ければ*.doアドレスのやつは全部そのfilter掛かるんだよ。
0534nobodyさん
04/09/18 00:44:57ID:???アリ?こりゃおっかしいなぁ〜
寒いわボケ しね
0535nobodyさん
04/09/18 00:59:53ID:???0536nobodyさん
04/09/18 01:00:21ID:???0537nobodyさん
04/09/22 04:52:07ID:???むしろfilterでコネクション取得して、切断。
Hibernateだと、「Open session in view」ってなってるから、さしずめ「Open connetion in view」だろうか。
0539nobodyさん
04/10/08 11:41:11ID:???現象として、ApplicationResourcesに設定してあるメッセージを取得できません。
struts-config.xmlには、
<message-resources parameter="res.ApplicationResources"/>
と設定して、ApplicationResourcesファイルの階層も間違っていないのですが。
どうやら、ローカルサーバーのApplicationResourcesを見ずに、ビルドした
ローカルの階層を見ているようで、こちらに設定するとメッセージは取得出来ます。
Tomcat 5.0
Struts1.1
を使用しています。
何か他に設定が必要なのでしょうか?
どなたかお教えいただけないでしょうか? m(_ _)m
0540nobodyさん
04/10/08 19:54:12ID:???>ローカルの階層を見ているようで、こちらに設定するとメッセージは取得出来ます。
よくワカンネ
0541nobodyさん
04/10/08 20:24:16ID:???それだとそれで正しい挙動だと思う。
0542nobodyさん
04/10/10 23:48:18ID:d05ou0eX0543nobodyさん
04/10/11 00:26:05ID:???賛否両論だが仕事でJavaでwebやるならとりあえず覚えておけ。
Java-webフレームワークの中では最高に普及していることは間違いない。
0544nobodyさん
04/10/11 00:27:51ID:???0546nobodyさん
04/10/11 12:49:36ID:???あんまり末端の層でブアツイフレームワークは必要ない気がする。
0547nobodyさん
04/10/11 14:55:13ID:???普及度? シンプルさ? 軽量さ? 機能? 脳内知識?
2位と3位のフレームワークも上げて欲しい。
0548nobodyさん
04/10/11 18:24:22ID:???その後JSFに以降。
0549nobodyさん
04/10/11 18:28:05ID:???0550542
04/10/11 22:46:32ID:1ye9esf40551nobodyさん
04/10/12 03:07:49ID:???0552nobodyさん
04/10/12 21:26:32ID:???0553nobodyさん
04/10/12 21:45:34ID:???0554nobodyさん
04/10/12 22:53:10ID:???0555nobodyさん
04/10/13 16:12:45ID:???0557555
04/10/13 17:20:59ID:???いえ、もしStrutsがセッション管理機能を持ってるんなら
そっち使いたいなぁって思っただけです。
Struts初心者なもんで。。。
0558nobodyさん
04/10/13 18:40:06ID:???セッション管理なんて、sessionにほりこむだけじゃん。
わざわざStrutsにやらせんでも。
ってか、何やらせたいん?
0559nobodyさん
04/10/13 19:07:31ID:???もっとアプリ寄りの高級なセッション管理ってことかな?
そういうのなら残念ながらない。
0560555
04/10/13 19:17:18ID:???そうですか、そういう管理機能は持ってないんですね。。。
今までどおりsession.getAttribute()でがんばります。ありがとうございました。
0561nobodyさん
04/10/13 22:38:10ID:???0562542
04/10/15 16:31:49ID:yJKQCGu4で、いきなりstrutsの本を渡されたんですが、読んでるとJSPやサーブレットのことを知らないとまずいですね、多分当たり前な話なんでしょうが
もうびっくりして別の書籍買ってきました。JSPとサーブレットに関しての本です。すると今度はXMLやらXSLTやらDOMやら出てきましたので
それも購入して読みあさった結果「これは腰を据えて取り組まなきゃいかんのでは?上司が言うように簡単にはいかん。」と思いました。
そこで質問なんですが、Webアプリ開発担当になるためには、JSP/サーブレット→XML/XSLT/DOM→strutsというような勉強の順番でいいですかね?
私は恥ずかしながらJAVA歴1年で去年1年間とある予約システム(店頭で店員がいじるソフト)の開発しかやったことありません。
オブジェクト指向はわかりますが、ネットワークアプリの開発もしたことありません。サーブレットは簡単そうなんですが、Web関係の技術は無知です。
どうなんでしょう?それともこの異動はもしかしてリストラの前兆ですかね?入社1年目にして?ぎゃって感じです・・・
0563542
04/10/15 16:40:48ID:yJKQCGu4岡山から先月引っ越してきました。なんだか前の部署(企業向けアプリ)の方がUMLの段階から
ノンキで仲良くやってたんですが、ここでは皆無口でPCに向かったまま、話し掛けると無視されます。
UMLも他の部署がしてるみたいで、ここの人はみんななんか機械やロボットのようです。
私はそんな片隅で自習です・・・他にも同じような人が3人いるんですが、みんな「??」状態です。
やばいですかね?業界のこともよくわからんですし、前の雰囲気が当たり前だと思ってたし
独学でやる気はあるんですが、どこから手をつければいいかわかんなくて・・・
0565nobodyさん
04/10/15 19:44:28ID:???ドゾー
Webアプリ開発担当になるためには、JSP/サーブレット→XML/XSLT/DOM→strutsというような勉強の順番でいいですか
0566nobodyさん
04/10/15 19:55:18ID:???それよりWebアプリ特有の設計をなんとかして学ぶ。Struts本くれたのもざっと
全体見渡せってことじゃないかと。しかしJava歴一年で「ずっとJAVAでソフト開発してきた」とは
大きく出たな。
>>565
まだ横に長い
0567nobodyさん
04/10/15 21:16:44ID:???そうじゃなければ別にイラン。
例えばstrutsは設定ファイルがxmlなだけで、別にxmlの知識が要るわけじゃないし。
0568542
04/10/15 21:35:15ID:yJKQCGu4すいません。長々と書いてしまいまして。
>しかしJava歴一年で「ずっとJAVAでソフト開発してきた」とは大きく出たな。
すいません。偉そうに言ってしまいました。「1年しか」ですね^^;
>>566 >>567
ご返答ありがとうございます。勉強方法がわかってとても安心しました。
とりあえずJSP/サーブレット→strutsという風に勉強します。
0569nobodyさん
04/10/15 21:54:52ID:???割と派手目だかすぐに枯れたりしないの花を買って生ける。
これだけでけっこう雰囲気が変わる。
しかし毎回買ってくるのは金がかかるし、ある日出勤したら倉庫に移動されてたりする。
だがこれで諦めているようではいけない。あくまでこれはイントロにすぎない。
次に持っていくのは植木鉢だ。今度は生けるのではなく本格的に植えてみよう。
前は花だった。香りもあったわけだ。それなりにインパクトがあるから皆それとなく気にかけていたはずだ。
今度は何がいいだろうか。不意をついて芝生や猫草などどうだろうか。何が生えるかな?などと
思って楽しみにしていると、もはやそれ以上何も生えない。これを気づかれないように少しずつ増やす。
そうやってある程度土壌が確保できたら本命の野菜を植える。大麻は駄目だ。葉ものが欲しければ七草程度にする。
そうするとだんだん森の動物が来るようになる。熊も来る。だんだん川も流れてくる。
こうやって大自然のなかに身をおくことで誰もが癒されてくる。誰かに優しくしたくなる。
とにかく職場の雰囲気に合わせては駄目だ。きっかけはたった一つの花でも気がつけば
ネイチャーだろ?こうなるともう自給できる。会社がなくなっても全然問題ない。そうだろ?誰か同意してくれよ、なあ。
0571nobodyさん
04/10/15 22:57:14ID:???いなければ殺伐とするのは当然だ
0572nobodyさん
04/10/15 23:10:30ID:???0574542
04/10/18 22:01:38ID:V0c+FM4A勉強のほうはお蔭様で進んでおります。
意外とスルスル頭に入るのでそんなに悩まなくても良さそうです。
みなさんありがとうございました。
あとコンテンツマネジメントシステムに興味あって
今Zopeとかも見ています。でもこれパイソンですね。
JAVAでないのかな〜・・・探してるが出てこない・・・
0575542
04/10/19 01:40:15ID:TaQwkqrUちょっといじってみます。ではでは、失礼しました。
0576nobodyさん
04/10/19 02:24:46ID:???0577nobodyさん
04/10/19 12:00:08ID:???0578nobodyさん
04/10/19 18:48:32ID:biz4bNlUにforwardするように設定したつもりが、JSPのページがまったく表示されません。
すぐ思いつく原因などがあれば教えてもらえませんか?ソースには以下のように
表示されています。
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<META http-equiv=Content-Type content="text/html; charset=utf-8"></HEAD>
<BODY></BODY></HTML>
エラーメッセージも出ないので何が原因なのかまったくわかりません・・・。
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の中で設定とかはできるのでしょうか?
■ このスレッドは過去ログ倉庫に格納されています