A Day In The Life

とあるプログラマの備忘録

struts

Strutsの時代は終わったんじゃなかろうか

昨日、Gavin King氏の講演聞きにいってきました。 とっても面白かったです。 JBoss Seamに興味がわいてきました。

Struts1.3x + Springの連携

ActionにサービスをAutowiringでDIしたいときは通常AutowiringRequestProcessorを使うのですがそうするとStrutsのChainが使えなくなってしまいます。 両方使いたいってときは↓のサイトが参考になります。 Struts(1.2.x)+Spring連携 Struts 1.3.x + Spring 2.…

DispatchActionの拡張ポイント

Struts1.x系のDispatchActionやEventDispatchActionを拡張するなら以下のようにすると良いですよ。 たとえばログ出力処理を共通化するならこんな感じでしょうか。 public class BsaeAction extends EventDispatchAction { @Override protected ActionForward…

シンプルなポップアップ画面を作ってみた。その2

前回、シンプルなポップアップ画面を作ると言っておきながらあまりシンプルじゃなかったなぁと反省しています。 で、修正してみました(Firefox2.0.0.6とIE6で動作確認済みです)。 では親画面のJSPからみていきましょう。 : 省略 : <script type="text/javascript"> var windows = new Object…

シンプルなポップアップ画面を作ってみた。

シンプルな検索ポップアップ画面を作ってみました。 今まではwindow.open使ってポップアップさせてwindow.opener使って親画面の値をセットしてましたが違う方法で実装してみました。 現場で使えるかどうかはかなり微妙ですw 画面イメージはこんな感じです。…

redirect

今までまったく使ったことなかったんですけど、Strutsでredirectできるんですね。 public ActionForward execute( ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { : 何らかの処理 …

ダークサイドJava

Struts + Spring + Hibernateが魔の組み合わせと言われるのがようやくわかってきました。 とりあえずメモ。 Strutsは実質FormにString型のフィールドしか使えない。Formからモデルに変換が必要。ドメインモデルにするとFormとの変換が超大変。→オブジェクト/…

Strutsの次は何でしょう?

Strutsはすごく好きなんですが、弱点が結構ありそろそろ卒業しようかと思ってます。 Controllerの機能はわかりやすくていいのですがViewが少し貧弱な気がします。 たとえば、ActionFormのフィールドは基本String型しか使えない。ActionFormに依存してします…

混乱しますよ。

Struts2.0.1がベータリリースされましたね。 StrutsはメジャーバージョンアップはせずにShaleに移行するんじゃなかったけ? よく調べるとStruts2.X系はWebWorkというフレームワークがベースになってるようですね。 今後、新しく採用する場合、ShaleにするかS…

検索ポップアップ

今使ってるフレームワークでは検索ポップアップの仕組みが提供されているが正直いい出来とは言えない。 バグの温床でたまに不可解な動きをしたりもする。 この仕組みを1から考え直そうと思い、いろいろ調べてると参考になりそうな記事を見つけたのでとりあえ…

Long型フィールドのrequiredバリデータが作動しない。

public class HogeForm extends ActionForm { private Long amount = null; public Long getAmount() {return amount;} public void setAmount(Long amount) {this.amount = amount;} } のようなアクションフォームにStruts-Validatorでrequiredを指定しても…

タイルを貼るようにWebページを構築する

JSPかいてるとどのページにも共通する部分ってのが結構あります。 ロゴ、ヘッダー、フッターなどなど。 毎回コピペしてたんじゃ保守も大変だし微妙にデザインが狂ってくることもあります。 こういった問題に今までは <%@ include file="" %> を使ってました…

struts-configのforwardタグについて

パンくずリストの開発をしていて気づいたことなんですが、 たとえばこんな画面があったとして 画面遷移がこんな感じだとすると 今まではstruts-configに <action-mappings> <action path="/entry" type="app.ScreenEntryAction"> <forward name="confirm_success" path="/confirm.jsp" /> <forward name="confirm_fault" path="/entry.jsp" /> </forward></forward></action></action-mappings>

パンくずリスト -実装編-

パンくずリスト実装編です。 たとえば以下のような画面遷移をしたとします。 ちょうど矢印の部分がActionForwardになるので、このActionForwardをActionが呼ばれるたびに以下のようにスタックに保存していきます。 こんな感じ。 これを実装していくわけです…

パンくずリスト

Strutsを使ってパンくずリストを自動で出力する機能を作成しています。 この機能まえまえからすごく欲しかったのですが具体的なアイデアが浮かばずできずじまいでした。 ActionForwardをスタックに入れるというアイデアが浮かんだのでそこから試行錯誤してな…

StrutsのRequestProcessorはグレイボックスクラスなんだって

ActionServletとRequestProcessorについて少し調べました。 StrutsではActionServletのカスタマイズをあまりすすめてないようです。 変わりにRequestProcessorを継承してカスタマイズするようにすすめています。 RequestProcessorではカスタマイズしやすいよ…

Struts1.3に移行

去年の7月にStruts1.2.7をベースに開発をはじめて1年あまり、気づけばStrutsのバージョンは1.3.5にあがっているではないですか...。 せっかくなので1.3.5にバージョンアップをしてみました。 jarの構成が少し変わったのとtldのtagclass、teiclass、bodyco…

StrutsのDispatchActionでハマる

昨日から自前Frameworkの改造してます。 手始めにBaseActionの継承先をActionからDispatchActionに変えてみました。 お手本どおりstruts-configのActionMappingにparameterを追加してActionクラスのメソッドを変更。 実行してみたところjavax.servlet.Servle…

Strutsを深く理解するなら

STRUTS・イン・アクションソフトバンククリエイティブこのアイテムの詳細を見る少し古い内容もありますがStrutsの生みの親が書いた本だけあって内容が深いです。 いままでなんとなく使ってた機能、「あ〜そういうことだったんだ」みたいな発見が沢山ありまし…

ページを指定してバリデーション

ValidatorFormを使用して複数JSPを1Form(ワンビッグフォーム)で管理するとページごとのバリデーションができなくて困ることがあります。 そんな時はValidatorActionFormを使ってやるとバリデーションをActionごとにできるので便利だったりします。 public cl…

明細でラジオボタンを使う

明細画面でラジオボタンを使用するのにかなりてこずった。。。 とりあえずメモ。 参考 で2つ情報を渡すには?

なやみの尽きないチェックボックス

Struts、ActionFormのresetメソッドの話題です。 複数画面で1つのActionFormを使用していて、なおかつチェックボックスが複数画面にまたがって混在する時、以下のようにするとうまくいきます。 public class SampleForm extends ValidatorForm { //画面1で使…

Cancelボタン

Windows系システムの入力画面でよくOKボタンとCancelボタンを配置した画面がある。 OKだったら入力内容を反映して親画面に戻り、Cancelだったら入力内容を破棄して親画面に戻る。 似たような構成の画面をStrutsでやろうとするとなかなかうまくいかない。 htm…

積極的に改善しましょう。

現在のプロジェクトではStrutsをベースにした独自フレームワークをつかってる。 いろいろ使ってると改善点とかが結構出てくる。 思いつくままに挙げると 基底Actionを作るときはDispacheActionを継承する。 FormはValidatorActionFormまたはDynaValidatorAct…

iterateタグのidとpropertyは同じ名前にしましょう。

iterateタグのid属性とproperty属性の名前を変えていたため思わぬところでハマってしまった。 public class SampleForm extentds ActionForm{ private List resultList = new ArrayList(); … …… } こんなActionFormがあったとしてJSPで <logic:iterate id="list" name="SampleForm" property="resultList"> … <html:text name="list" property="field1" indexed="true" /> …</html:text></logic:iterate>

maskバリデータ

Struts-Validatorって結構いろんなことができますね。 maskバリデータとか1.2から追加になったvalidwhenバリデータとか。。。 なかなか便利です。maskバリデータのvalidation.xmlはこんな感じ <formset> <form name="sampleForm"> <field property="password" depends="mask"> <msg name="mask" key="error.password"/> <var> <var-name>mask&lt;/var-name> <var-value>.*([0-9]+.*[a-z]+)|(…</var-value></var-name></var></msg></field></form></formset>

htmlタグ:styleId属性

Strutsのhtmlタグにid属性がないことに気づきました。 <html:checkbox id="hoge" /> って書いてHTMLを出力しても、 <input type="checkbox"> と出力されてしまいます。 あれ!?無視ですか。。。 タグにIDつけたい時はどうしたらいいんだろうと少し調べるとstyleId属性なるものがありました。 このようにstyleId</html:checkbox>…

CheckBoxイケてない。

HTMLではCheckBoxをオンにした時しか値を送信してくれません。 これだとチェックオンからオフに変えてもFormのセットメソッドは呼ばれず値が更新されません。 これを回避するためにはFormのresetメソッドでCheckBoxの初期化処理を書いてやらないといけません…

logic:iterate

Strutsのiterateタグをネストして使うときのBeanの指定の仕方がわからなくて苦戦しました。 FormBeanの構成が public class HogeForm extends ActionForm { private String id = null; private List resultList = new ArrayList(); ...Getter Setterは省略 }…

ActionFormのresetメソッド

StrutsのActionFormにresetメソッドっていうのがあります。 今までこのメソッドは項目の初期化に使うんだと思っていたんですが、少し使い方が違うみたいです。実際に使う場合、 リセットが必要なプロパティはセッションスコープのフォームにあるチェックボッ…