Struts

LookupDispatchActionとEventDispatchActionの比較

Googleの日本語で「EventDispatchAction」を検索するとほその日記(2006/04/25)しか見つからない(WEB全体でも少ない・・・)と言われ、それならもう少し詳しく書いておこうかなと思って書きます。実際にコードを書いて検証したわけでなく覚書なので間違ってる所が…

tiles:putはなぜに引数がString限定か

Objectを扱えるようにしてくれれば、呼び元のJSPからテンプレートのJSPにオブジェクト渡せたのになぁ〜。仕方ないのででリクエストに入れて、${〜}で参照する事にしたけど、スコープの範囲が広すぎるのが美しくない。はpageContextに入ってるComponentContex…

tiles:putの値をELで取得するには

<tiles:put name="key" value="hoge" />で渡した値は<tiles:getAsString name="hoge" />で取得しますが属性の値をさらに他のタグに渡したい場合渡せなくて困ります。例えば <html:select property="ここに渡されたhogeを設定したい">苦し紛れにこんなことをやってもコンパイルエラーになります。<html:select property="<tiles:getAsString name="key" />">では<html:select property="${key}">とできるようにするにはどうするか?とりあえずで…</html:select></html:select></html:select></tiles:getasstring></tiles:put>

たまにはStruts

EventDispatchActionが気になったから。1.2.9から追加されたDispatchActionらしい。(より詳しい説明をhttp://d.hatena.ne.jp/hoso-kawa/20070224に書きました)#ソース読んでサンプル書いてみた。使いどころが明確に浮かばないけど、DispacheActionのちょこ…

memo

HTMLの共通的な属性のsetter/getterがあるのはBaseHandlerTagクラスで、HTMLのタグを生成するタグライブラリ郡はこれを継承している。 BaseXxxTagがBaseHandlerTagで定義された属性以外の共通の属性を生成している。 属性値はprepareXxxxxx();メソッドで分類…

パターン化されているからとにかく機械作業

ServiceとDaoは最初に1回だけ作成。必要なものを洗い出してグルーピングするため。ActionとActionFormは作る時になったら毎回書く。使うServiceとDaoは既にテストが終わっているので処理の委譲を書けば終了。クラスって書いてある所の一部はインターフェース…

Struts1.1と1.2の違い

struts-config.xmlにデータソースの設定をしてちゃっちゃとサンプルでも動かそう!と、Struts1.1の設定をコピーしてきたら動かないのなんの。違いを以下に示します。 1.1の場合 <data-sources> <data-source> <set-property property="driverClass" value="" /> <set-property property="url" value="" /> <set-property property="user" value="" /> </set-property></set-property></set-property></data-source></data-sources>

アンカーのようなボタン

http://d.hatena.ne.jp/tpircs/20040831#p2 html:link action とおんなじことをbuttonでやりたいんですが、javascript使わなきゃむりぽ? を見てそういえばこんなのがあったなぁ〜と思い書いて見る。教祖の質問の答えにはなってませんけど、こんな案もあるっ…

contextRelativeとは?

actionタグの子要素に書くforwardタグにcontextRelative属性があるじゃないですか。これってぶっちゃけて言うとpath属性で指定した文字列が"/"から始まっていたらパスの先頭にrequest.getContextPath()の結果を自動的に付加するかどうかってことですかね。い…

DispatchActionに定義するメソッドはひとつか

DispacheActionと言えど基本概念はActionと一緒。1イベント、1メソッド、1クラスと。しかし、それじゃーDispatchActionの意味が無い。機能ごとに1クラスに複数メソッド書いても良いじゃないですか。例えばマスタメンテナンスなら、select, insert, update, d…

続:ActionErrorの国際化対応

なんか究極にやっちゃいけない事のような気もしますが、一応できる事が判明 public ActionErrors validate( ActionMapping mapping, HttpServletRequest request) { MessageResources resources = (MessageResources) request.getAttribute(Globals.MESSAGES…

ActionErrorの国際化対応

new ActionError("message.key", "replace value"); 問題は"replace value"の所です。通常の使い方だと固定で文字列を埋め込むようになっていますよね。これが問題です。置換文字列そのものも国際化対応したい場合どうしろと…。ActionErrorを主に作るのはAct…

tiles:insertを使うとエラー時に真っ白画面

どうにかならんもんか。本当はスタックトレースをどばーっと表示して欲しい所を真っ白画面になってしまいます。真っ白画面のHTMLソースを見るとtiles:insertの直前でストップしています。とりあえずコメントアウトしてスタックトレースは見ていますけど、解…

Dispache Actionの横断

ActionからActionを呼び出す際に <forward name="success" path="/page_name.do?method=methodName" /> とやってしまって良いもんなんだろうか。とりあえず何も調査しないでやっているので後で書き直すかも。とりあえずアクションからアクションの呼び出しはできている。actionタグのredirectは…とりあえず今は眠いっ。どんな場</forward>…

Action内でActionErrorをrequestに追加する

ActionFormのvalidateじゃチェックしきれなかった、業務のエラーかつ、<html:errors/>を使いたい場合にどうやるんだ?と思ってやってみた。 request.setAttribute(Globals.ERROR_KEY, errors); 値の設定方法はこんな感じ。こうすると<html:errors/>が勝手にエラーを一覧表示してくれる。s</html:errors/></html:errors/>…

ファイルアップロード → Zip解凍

書いた、一発でアップロードできた、Zipの中身も覗けた。でも日本語のファイル名が出てきた瞬間コケた…。今日は気力が尽きたので明日へ持ち越し〜。きっと些細な事だろう〜

html:formタグの<の対応が取れていません

どんなに見たって&lthtml:form>〜</html:form>の対応は取れている…と思ったら&lthtml:form>〜</html:form>の子要素の<html:file>が空タグとして定義されてなかった…勘違いさせてくれるエラーメッセージでした(T_T)</html:file>

国際化対応(日中米)

これは思ったより大変だ…HTMLが既にタグライブラリの嵐で原型を留めていません(T.T) 前: <input type="submit" name="event" value="戻る"> 後: <html:submit property="event"> <bean:message key="button.back" /> </html:button> なんでぃすかこの戻るボタンはー(;´д⊂ #そこっ、昼食はご飯(日中=米)じゃなくて、日本語、中国語、英語です…。

Action.execute内でメッセージリソースを取得

タグライブラリやActionErrorなんかは内蔵してくれているので問題ないのですが、独自のエラーメッセージなんかを出したい場合に、リソースの取り方が分からなかったので調べてみた。とりあえずActionクラスを見てみると、getResourcesがあるのでこれで試して…

DispatchAction vs URLによるコンポーネントメソッドの呼び出し

お題:ifを使用せずイベントを実行せよ。パラメータはURL又はフォームより渡す事。つまりイベント駆動型アクション? ※Strutsを隅々まで知り尽くしてない人が書いたものですので、ヘタレな実装かもしれません。Strutsの場合通常Actionクラスを実装すると、何…

struts-htmlタグライブラリでスタイルシートクラスをを指定する場合

通常だと <tagName class="cssClassName"> となるが、struts-htmlタグライブラリの場合は <html:tagName styleClass="cssClassName" /> となる。従来のstyleはstyleのまま。 #どうでもよさげな備忘録が増えてきたのでアッチのBBSに移行したほうが良いかしら…。</html:tagname></tagname>

ActionFormをJSPで取得する

どーしてもカスタムタグで処理がうまくいかない場合はスクリプトレットで書けば簡単に書けるでしょう。(ようはTaglibの使い方がわけわからない時の回避策) struts-configのactionタグのscope属性によってActionFormの取得先が違う scope="request"の場合 <% …

カスタムタグのコメント化

StrutsというよりTaglibの話ですが、HTMLのコメントでは駄目でJSPのコメントを使用する。 JSPの場合 <%-- 〜 --%> ColdFusionの場合 <--- 〜 ---> 両方とも複数行のコメントアウト可能。%を足すか、-を足すかの違いしかありませんね。

scope属性のデフォルト値

struts-config.xmlのactionタグの属性、scope。省略するとSessionスコープになる…。そうだったのか…

struts-tile vs ColdFusion

お題:画面から共通のテンプレートへ値を渡す 全画面に共通のヘッダーがあって、タイトルだけ指定したい。そんな要求を実現するのに随分と時間を食ってしまいました。でも実現できたので良しとします(笑) struts-config.xml <plug-in className="org.apache.struts.tiles.TilesPlugin" > <set-property property="definitions-config" value="/WEB-INF/tiles-defs.xml" /> </set-property></plug-in>

Strutsの開発を…

この開発が終ったらCold Fusionの開発を終えてのStruts版、「Strutsの開発を終えて」でも書こうかなと思います。今struts-tilesやってるんですけど、やっぱりColdFusionの方が簡単でドキュメントが充実してます。ColdFusionひいきなんで、何と戦わせてもCold…

同じActionFormで参照できないプロパティがある…

String型のプロパティにアクセスできて、Timestamp型のプロパティにアクセスできない…もうちょっと調べてみよう。絶対どっかに些細な間違いがあるはず…。しかしタグライブラリがColdFusionに比べて使いづらい。あうあう。

form-beansの定義でクラスが無くてもエラーにならない

存在しないクラス名を指定してもエラーにならん(T.T)なんでActionFormがnullで渡ってくるのか分からなくて、延々悩んだ結果、パッケージ名が1文字間違ってたという「よくある事だよ」にハマってしまいました。ヤラレター(゜Д゜)