cypher256's blog

Pleiades とか作った

SAStruts

SAStruts、S2JDBC プラグイン

DBViewer S2JDBC 拡張 ウィザードで J2JDBC エンティティー・クラスを作成する DBViewer 拡張。同様のツールに S2JDBC-Gen があります。 SAStrutsPlugin for Amateras Project Amateras で EclipseHTMLEditor のアドオンとして動作する SAStruts 向けのプラ…

Rails の暗黒面

ただ、Railsの中心的な考えであるConvention Over Configuration(CoC)は、強力だけど、暗黒面も強いと思うんだよね。一見簡単に見えるけど、ちゃんとしたアプリケーションを作ろうとしたら、かなり踏み込んだことまで知らないと、使いこなせない。バージョン…

SAStruts が拡張性に乏しい?

ユースケース毎のクラスで各実行メソッド毎にURLが決まるので、共通処理が書けない。ログインチェック処理とか。(未ログインだったらどこかのページにリダイレクトするとか)ここらへんは拡張に乏しい。 2008-09-06 方法は色々あると思いますが、例えば、Pr…

Seasar3 は Spring ベースに

誤解があるタイトルですみません。昔 Seasar3 という言われたものが Slim、正式に Slim3 となる方向だそうです。で、その Slim は Spring の上に構築すると。 HOT deploy可能なSpringの上に、SAStrutsとS2JDBCを移植して、HOT deploy可能なフルスタックのフ…

フレームワーク拡張問題

業務に依存しない部分で、かつフレームワークを作った方のポリシーに合うものなら、できるだけフレームワークを作った方に対応していただくことがベストなやり方です。拡張するときにすべてを把握できていないため、見えない問題が存在していたり、バージョ…

ネストしたプロパティで入力チェックの実装

2008-04-19 のエントリー。 自分でカスタマイズするなら ActionCustomizer を継承し、setupValidator メソッドに少しコードを追加するすることで対応可能です。プロパティを getClass() して、その定義クラスを getFileds() し、getAnnotations() した後、プ…

検証用アノテーション

SAStruts では Struts 標準の入力チェックに対応するアノテーションが用意されていて、Mask を使えば大概のことはできますが、それだけだと実際の業務プロジェクトでは開発者が苦労することになります。小数点を含む数値に @DoubleType とか使うと "1d" とか…

@Reset アノテーション

フォームをセッションで持つと、検索画面や変更画面にあるチェックボックスなどの値は画面でチェックをはずすと、前の値が残ってしまうので、リクエストの値がフォームにセットされる前にクリアする必要があります。SAStruts にも Struts と同じようにフォー…

JSP で Action に指定した roles を使う

SAStruts では Servlet コンテナの認証を使った場合、アクションの roles 属性を指定することにより、アクセス制御が可能です。これでセキュリティは守られます。でも実際のところ、その権限によって、画面にメニューやリンク、ボタンの表示/非表示を切り替…

JSP、JSTL、EL で定数を使う

今回のプロジェクトでは定数クラスは設計書から自動生成されるようにしました。でもせっかく定数クラス作っても、JSP ではベタ書きしていたり、JSP で定数使うのはおかしいとか言うエラい人もいたりしますが、やっぱり JSP でも定数使いたい場面はあります。…

SAStruts 採用説得パターン

今回のシステムは色々な会社が開発に参画しているのですが、END のお客様に説明した時にちょっと変わった反応が。あとで分かったのですが、他の人が Struts なので開発者はすぐ集まりますとか周知していたらしいです。当事者の方も見ているかもしれませんが…

SAStruts を選んだ 5 つの理由 - アーキテクチャ

これは私がその都度、俺々フレームワークでやってきた理想形でした。もちろん、すべての問題領域でカバーできるとは思いませんが、私が今まで携わったシステムでは適用しても問題にならないと思います。その昔、エラい人たちが語ってきたものとすべて真逆で…

フォームクラスをアクションとは別にする 5 つの理由

セッションに格納したい場合は作る、っていうのがあれな気がします Struts に慣れている人に違和感がない気がします 最近よくあるフレームワークはプロパティも一緒に持ってるけど、あれはページ単位です サンプルでは小さいけど、実システムでは一緒にする…

セッション管理

上でも書いてますが、フォームは InstanceType.SESSION 固定です。画面入出力情報だけでなくセッションに持ちたい情報はすべてフォームに持ち、ユーザに関する情報はすべて User オブジェクトにもち、アクションやロジックにインジェクションされます。HttpS…

フォームとアクションの標準構造

上の「アクションの粒度」で書きましたが、アクションと同じ粒度、つまり 1 機能に対し 1 フォームを作成します。一覧の明細はインナークラスにします。こんな感じ。 追記:下記から transient 指定は削除しました。コメント参照。 @Component(instance = In…

拡張性

Struts もそうですが、SAStruts と S2JDBC もかなり高い拡張性を持っています。汎用的に出来ている分、シンプルとはいえ、プロジェクトや開発メンバスキルにより切り捨てたほうが良い機能もあります。必要な機能のみを周知し、足りない機能は追加する。とい…

JSP2.0 ファンクション

今回のプロジェクトでは 2 種類程度のフォーマットしか使用しない (ほとんどのプロジェクトでそうだと思いますが) ため、フォーマット決めうちの x:date や x:datetime を用意しました。 だと汎用的すぎますもんね。

アクションの粒度

アクションは機能単位で作成し、フォーム (Dto) も必ず対で作成。のためか思ったより肥大化せず。フォームはセッションスコープ固定で、メニューなどでセッションから削除。各業務画面では完了画面への遷移時にエンティティなどの大きなオブジェクトのみ削除…

認証

ひがさんお勧めの BASIC 認証 (+ FORM 認証) の JDBC レルム。どのアクションにアクセスしても、ログイン画面が出るのはやはり便利です。ただ、ユーザテーブルに削除フラグなどがあった場合、認証後に再度 ActionServlet などのサブクラスで SELECT し、判定…

画面部品

Cubby TIPS にあるような画面部品を実現する場合は下記のような感じ。Action に依存しないため、かなり便利です。 common.jsp や header.jsp で dao を getComponent しておく。 JSTL で使用可能にするために検索結果を Beans で BeanMap にコピーする。 例…

ネストしたプロパティで入力チェック

アノテーションによるネストした子Dtoのバリデーションは、複雑なことは対応しないという方針に基づいて、やってくれないのが仕様です。 2008-04-17 - 出羽ブログ 自分でカスタマイズするなら ActionCustomizer を継承し、setupValidator メソッドに少しコー…

SAStruts + S2JDBC でサクサクか炎上か

可燃プロジェクトに飛び込むことになりました。下記のような炎上する要素満載。 関係者各社に告知済みのためカットオーバーは伸ばせない 外部仕様を策定した会社は行方不明 外部仕様はあるが、OS も AP サーバも環境もアーキテクチャーも未定 外部仕様を分か…