WebWork2学習記

26. ファイルアップロード(WebWork2.2)

基本的にはid:matobat:20050211:p5とあまり変わっていませんがいくつか変更があるようです。 なおファイルアップロード実装はJakartaしか試していないのでご注意ください。 ContentTypeとファイル名の取得 MultiPartRequestWrapperを使わなくてもファイルのC…

25. メール送信

メール送信にはozacc-mail library(http://spring-ext.sourceforge.jp/oml/)を使います。 WebWork2とozacc-mail libraryは共にVelocityをテンプレートエンジンに使っているため非常に相性が良いです。 以下のように書けば、ozacc-mail libraryのXMLの中でも…

24. default action

Webwork2.2.2(XWork1.1.1)から存在しないActionが指定された場合に動作するdefault actionが使えるようになりました。 xwork.xmlのdefault-action-ref要素にdefaultで動作するActionを指定します。 xwork.xml <xwork> </xwork>

23. 国際化

クライアントの言語に合わせる場合 webwork.propertiesにwebwork.localeを指定しないようにする。 インストールごとに言語を変える場合 webwork.localeに使用するロケールを設定 I18nInterceptorが実行されるようにxwork.xmlに設定 言語ごとにプロパティファ…

22. アノテーションによるAction,Resultの前後処理

WebWork2.2で以下のアノテーションサポートが追加されました。 Interceptor Annotations Validation Annotations Type Conversion Annotations 下の2つは設定ファイルで書いた方が楽だと思いますが(^^;、Interceptor Annotationsは便利なので紹介します。 こ…

21. エラー処理(WebWork2.2)

WebWork2.2に付属されているXWork(1.1)から例外処理用のInterceptorが追加されました。 発生した例外に応じて設定されたResultを実行する機能になっています。 webwork-default.xml 以下の記述が追加されています。 <interceptor name="exception" class="com.opensymphony.xwork.interceptor.ExceptionMappingInterceptor"/> xwork.xml package要素の下にglobal-exce</interceptor>…

20. DIコンテナとの連携

プレゼンテーションフレームワークとDIコンテナが連携する際に問題になるのは、プレゼンテーションフレームワークで生成しているオブジェクトがDIコンテナで管理できないという部分です。 WebWork2(というかXWork)では、Action,Result,Interceptorなどのイン…

19. Actionの非同期実行

WebWork2にはActionの非同期実行というか、要するに実行中画面を表示する機能があります。 ExecAndWaitAction 10秒のスリープを10回繰り返し、progress(進捗率)を10づつ上げていくだけのActionです。 public class ExecAndWaitAction extends ActionSupport …

18. 複数ボタン対応

同じフォームに複数のSubmitボタンがある場合の対応方法です。 通常のServletと同様にリクエストパラメータに含まれる押されたボタンの値を使いますが、Action内でチェックするよりも汎用的なやり方でやってみます。 calculate.vm <form action="calculate.action"> 数値1:<input type="text" name="value1" value="$!value1" /><br /> 数値2:<input type="text" name="value2" value="$!value2" /><br /> </form>

17. JasperReportsでPDF出力

WebWork2ではJasperReportsという帳票ライブラリを使ってPDFファイルを出力することが出来ます。豊富なViewがあるのもWebWork2の特徴の一つです。 準備 以下の3つのライブラリを追加します。なおグラフを出力する場合はJFreeChartが必要になったり、Excelで…

16.Token機能

Token機能はStrutsなどでも採用されている機能で、リクエストパラメータ内に特定の文字列(Token)を埋め込んでおき、サーバのセッションコンテキスト内に保存されているTokenと照合することにより、2重送信の防止やページ遷移の保証などを行う機能です。 リク…

15. xwork.xmlの分割

設定ファイルが肥大化すると、可読性や編集効率の低下や競合の発生頻度が上がってしまうので、サブシステムや機能単位などに分割したい時があると思います。 include要素で別のxwork設定ファイルを読み込むことができ、package要素のextends属性で他のパッケ…

14. Actionの前処理

Actionでexecuteメソッドの前に処理を行いたい場合はPreparableインターフェースを実装して、prepareメソッドに前処理を記述します。するとPrepareInterceptorによりprepareメソッドが実行されます。 入力チェックなど他のInterceptorの処理の前に実行したい…

13. エラー処理

エラーの処理では個別のActionごとで処理するエラーと、共通でエラー画面を出す場合があると思いますが、 個別のエラー処理はAction内でやるとして、Actionでcatchしなかった例外が発生した場合に共通のエラー画面を出す方法を紹介します。 xwork.xml(global…

12. メッセージの外部化

メッセージ定義プロパティファイルの作成 プロパティファイルは以下のような順番で探しに行きます。指定したキーに対応する最初に見つかったメッセージが使用されます。 同じパッケージ内にある「クラス名.properties」 親クラスと同じパッケージ内にある「…

11. 入力チェック

WebWork2での入力値のチェックはActionクラス内に入力チェックのロジックを書くか、設定ファイルを書いて入力チェックをする2つの方法があります。 Actionクラス内での入力チェック ValidateBySelfActionの作成 ActionSupportは元々Validatableインターフェ…

10. ファイルダウンロード

StreamResultを使った場合 WebWork2ではファイルの出力用にStreamResultというクラスが用意されています。 通常使うServletDispatcherResultではJSPやVelocityに結果出力を任せるところを、StreamResultは指定したInputStreamをクライアントに出力します。 F…

9. ファイルアップロード

WebWork2ではファイルアップロード処理の実装を選ぶことが出来ます。 ファイルアップロードの設定はwebwork.propertiesに書きます。 webwork.propertiesの設定 今回は実装にJakarta Commons FileUploadを使います webwork.multipart.parser=jakarta webwork.…

8. モデルドリブン

WebWork2では基本的にActionのフィールドに入力パラメータを保持します。 しかし、StrutsのActionFormのように入力パラメータを受け取るクラスを作ることも出来ます。 WebWork2ではその仕組みをModelDrivenと呼んでいます。 入力値を格納するクラスを作成 pu…

7. Velocityでのリクエストパラメータの再表示

エラー時などにリクエストパラメータを入力欄に再表示する方法です。 とりあえずはVelocityの機能でやります。 単純なリクエストパラメータの場合 parameter.vmを編集 $の後に!を付けると変数がnullの場合は空白が出力されます。 リクエストパラメータ:$word <form action="parameter.action"></form>…

6. 可変行の入力フィールドの値を取得する

明細行など入力フィールドの数が可変になるパラメータの受け取り方です。 明細行クラス 可変行のフィールドをまとめたクラスを作ります。 package ww2.examples.event.input; public class MultiInputFieldValue { private boolean check; private String te…

5. checkboxを使う

入力フィールドにcheckboxを使った場合の処理です。 checkboxが一つの場合 Action booleanのsetterを書きます(初期値はfalse) package ww2.examples.event; import com.opensymphony.xwork.ActionSupport; public class SingleCheckboxAction extends Action…

4. リクエストパラメータを取得する

リクエストパラメータの取得の仕方です。 Action リクエストパラメータを受け取るにはActionにsetterを書きます。ついでにgetterも書いておきます。 命名的にはset+「リクエストパラメータの名前の先頭を大文字にしたもの」です。例えばリクエストパラメータ…

3. Actionを作る

ActionSupportを継承してクラスを作成 package ww2.test.action; import com.opensymphony.xwork.ActionSupport; public class SimpleAction extends ActionSupport { public String execute() throws Exception { return SUCCESS; } } xwork.xmlにアクショ…

2. 設定ファイル

web.xml とりあえず最低限の設定です。(WebWork2+Velocity) <web-app> <servlet> <servlet-name>webwork</servlet-name> <servlet-class> com.opensymphony…</servlet-class></servlet></web-app>

1. 基本的なディレクトリ構成

まずは公式ページからリリースファイルをダウンロードしてきますが、新しくアプリケーションを作るときの雛形になるようなものは存在しません。(サンプルもいらないものが入りすぎ) そのためとりあえずシンプルな構成を作る必要があります。 Viewに関してはJ…

0. おさらい

今度仕事で使うことになったので、前にWikiにまとめていた内容を最新バージョン:2.1.7でおさらい。

WebWork2学習記

0. おさらい(id:matobat:20050128:p1) 1. 基本的なディレクトリ構成(id:matobat:20050128:p2) 2. 設定ファイル(id:matobat:20050129:p2) 3. Actionを作る(id:matobat:20050129:p3) 4. リクエストパラメータを取得する(id:matobat:20050130:p1) 5. checkboxを…