タグ

ブックマーク / www.masatom.in (5)

  • Struts/Validateのやり方 - きのさいと

    ユーザ入力値は必ずValidateする必要がありますが、Actionクラスに入力チェック処理などを書くと、ビジネスロジックと入力チェック処理が混在し、あまりキレイとはいえません。また入力した内容はActionForm?が責任を持つべきだという思想(?)からか、ActionForm?にはvalidateする統一的なI/Fを持っています。ちなみにこの方法はStruts1.0までのもので、1.1以降はValidatorプラグインが主流となるようです。 ロジックの実装 † まずはActionForm?にチェックロジックを実装します。ActionForm?にはvalidateメソッドが定義されているのでこのメソッドをオーバーライドします。下の例ではユーザ入力値が空だったり、パラメータがリクエストにのってこなかったりしたときに、エラーを表示しています。 public ActionErrors vali

  • Struts/リンクの作り方 - きのさいと

    formのactionで † <html:form action="/execute"> <html:select property="hoge"> <html:options name="menu.pulldown"/> </html:select><html:errors property="hoge"/> <br/> <bean:define id="title" name="executeForm" property="hoge" type="java.lang.String"/> <%-- 変数名がexecuteFormのhogeというpropertyを titleという変数名で参照。(型はString) --%> <html:submit/><html:cancel/> </html:form> とするとformが作成できる ↑

  • Struts/ActionMessagesによるエラー処理と、例外ハンドラで処理した場合の挙動の違い - きのさいと

    エラー処理を行う場合、遷移先のエラー画面JSPで <ul> <html:messages id="message"> <li><bean:write name="message" /></li> </html:messages> </ul> などと書いたりしますが、ActionMessages?を使ったエラー処理の場合と、例外ハンドラを使って処理した場合に出力される内容が違ってたのでいろいろ調べてみました。その調査メモ。 例外ハンドラを使ってJSPに遷移した場合、アクションクラスでせっせとセットしたActionMessage?が画面に表示されなかったので、何でかなーと思って調べたのがきっかけです。 まずは<bean:write name="message" /> から † まず<bean:write name="message" /> のmessageというオブジェクトはだれがどう生成して

  • Struts/同期トークンで二度押しなどをチェックする - きのさいと

    WEB開発で必ずついて回るのが、Submitボタン二度押しや戻るボタンを押されるなど、勝手な画面遷移をされないような配慮です。Strutsでは同期トークンという機能でこれらの考慮をサポートしてくれます。 実際にサンプルで、ある画面でSubmitを二度押ししたとき、それを検知して二つ目のリクエストをエラーではじくという事を考えてみます。 同期トークンとは † 同期トークンの機能とは以下の通りです。 あるアクションで、サーバ上でユニークなID(以下、トークン)を生成し、返却するhtmlにhidden等で仕込んでおく そのアクションで、トークンはSessionにも格納しておく 次のリクエストにはhidden内のトークンが飛んでくる 次のアクションで、hiddenパラメタ内のトークンとSessionのトークンが等しいことを確認する 等しければ、正しいリクエストということで処理する。Session

  • Maven2/TIPS集 - きのさいと

    -source 1.3 でサポートされていません とか言われる場合 † ソースのバージョン - TzlTTqTjの日記を参考にさせていただきました!ビルドの設定を下記のように書き替えればよい <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <configuration> <source>1.5</source> <target>1.5</target> </configuration> </plugin> </plugins> </build> さらにtargetタグにつづけて <encoding>Windows-31J</encoding> とか指定すれば、文字エンコーディングによるコンパイルエラーなど

  • 1