読者です 読者をやめる 読者になる 読者になる

A Day In The Life

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

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

bean:message

Strutsの<bean:message>タグはメッセージを表示することが出来ます。 表示させるメッセージはメッセージリソースファイルにあらかじめ定義しておきます。 <bean:message>タグにはkey属性とarg属性が指定できます。 key属性にはメッセージリソースファイル内の表示したいメッセージのkeyを</bean:message></bean:message>…

ファイルのアップロードとダウンロード

Strutsでファイルのアップロードとダウンロードをする画面を作っています。 アップロードはhtml:fileタグを使い、 ダウンロードはDownloadActionを使って実現する予定です。 うまく行くかな?

Strutsって結局何が出来るの?

Apache Strutsハンドブックソフトバンクパブリッシングこのアイテムの詳細を見る Struts1.1の内容がほぼすべて網羅されています。 Strutsって結局何が出来るの?って思っている方に最適です。 こんな機能を実装したいけどStrutsで出来るんだっけ?みたいな時…

カスタムタグ

ページ送りの続きです。 次へボタン、現在ページ、前へボタンのJSPをカスタムタグで実装することにしました。 ↑こんな感じのタグを作成。 カスタムタグと言えば一般的にTagSupportクラスを継承して、doStartTagメソッドをオーバーライドします。 public int …

ページ送り

Strutsでページ送り機能の実装をしています。 単純にワークテーブルを使って実装することにしました。 次へボタンと前へボタンの活性/非活性制御はbuttonタグのdisabledを使って制御しました。 <bean:define id="frm" name="actionFormName" type="jp.co.aaa.forms.ActionFormName" /> <html:submit value="Next" disabled="<%= frm.isDisabledNextButton() %>" /> といった感じです。 あとはActionFormでボタンの状態を受け取</html:submit></bean:define>…

チェックボックスの初期化

Strutsでチェックボックスのあるフォームを作成する時、チェックボックスの値が初期化されません。 なのでActionFormでリセットを明示的にかけてやらないといけません。 やり方は簡単。 ActionFormのresetメソッドでチェックボックス用の変数にFalseをセット…

確認画面

Strutsで更新画面を作成しています。 内容を入力して入力した内容を確認画面に表示してからDBに更新するようにしています。 確認画面のデータ表示に<bean:write>を使うと確認画面のActionFormにデータが渡らなくてうまく更新できませんでした。 前の画面で入力した内容を</bean:write>…

開発開始

Eclipseとの格闘もひと段落し、本格的に開発を開始します。 サンプルを作成中にisTokenValidでエラーが発生して苦戦しました。 <html:form>タグの下にある<html:link>タグでActionを直接呼んでいたのが原因でした。 結局JavaScriptでActionを呼ぶように変更しました。 やっと開発の</html:link></html:form>…

ActionとActionForm

Strutsの勉強をやっていますがいまいち理解が進まないです。 ということで今日はテックスコアというサイトで勉強することにしました。 説明がわかりやすかったので、Strutsの基本であるActionとActionFormはなんとなくわかるようになりました。 このサイトは…

Strutsとデータベースを連携する

昨日からStrutsとデータベースの連携プログラムを作って勉強しています。 とりあえず「struts-config.xml」の<data-sources>タグあたりを直してみるがうまくいかない。 よくわからないので<data-source>タグはそのままにして「web.xml」に以下のタグを挿入。 <resource-env-ref>< <resource-env-ref-name>jdbc/dbmag</resource-env-ref-name> <resource-env-ref-type>javax.sql.Dat</resource-env-ref-type></resource-env-ref></data-source></data-sources>…

Weblogic上でStrutsアプリが動かない。

環境設定が比較的簡単に終わったので今日は調子に乗ってStrutsと連携させることにしました。 http://struts.apache.org/からStrutsをダウンロード。 ビルドはAntがいいらしいのでhttp://ant.apache.org/からAntをダウンロード。 Antとjdkの環境変数を設定し…