サポートページ
サンプルファイルのダウンロード
特集1「やさしく覚えるWebアプリケーションの作り方」
特集2「これからのStruts必須テクニック」
- 第1章「5分でわかるStruts」で使用されたソースコード(2004/4/30更新)
- 第2章「新バージョン1.2の新機能」で使用されたソースコード
- 第4章「Struts SSL ExtensionでHTTPS通信」で使用されたソースコード
- 第5章「Struts Workflow Extensionでフロー制御」で使用されたソースコード(2004/12/16更新)
- 第6章「StrutsTestCase for JUnitでテスト駆動開発」で使用されたソースコード
特集3「MySQL活用 最前線」
- 第2章「MaxDBでいこう」で使用されたソースコード
特別企画2「はじめてのFlash MX 2004」
一般記事
連載
お詫びと訂正
本書の掲載内容に下記の誤りがございました。読者の皆様、および関係者の方々にご迷惑をおかけしましたことをお詫び申し上げます。
特集2 第1章「5分でわかるStruts」
ダウンロード用サンプルアプリケーションに誤りがありましたので、ダウンロード用ファイルの差し替えを行いました(2004/4/30)。すでにダウンロードされている方も、お手数ですが再度ダウンロードしてください。なお、誌面には影響がありません。
誤りの内容
サンプルアプリケーションをTomcat 5系(動作確認したバージョンは5.0.19)で動作させた場合、「ログイン」画面から「Login」ボタンをクリックした際に、JSPのコンパイルエラーが発生し、ブラウザにサーバ側の内部エラーを示す画面が表示される誤りがございました。
JSP(menu.jsp)でuseBeanアクションを利用してユーザ名を表示していますが、useBeanアクションで指定するオブジェクトはJavaBeans仕様に従っている必要があります。しかし、今回のサンプルで利用しているオブジェクト(User.java)はJavaBeans仕様で定められているデフォルトコンストラクタを備えていないため、上記のコンパイルエラーが発生します。
訂正内容
サンプルアプリケーションをTomcat 5系で動作させるには、下記のように修正する必要があります。これ以外のバージョンのTomcatや別のコンテナを利用して同様の現象が発生した場合も修正をお願いいたします。
User.javaファイルの5行目にデフォルトコンストラクタを追加
public User() {
userName = "";
}
なお、今回のエラーはTomcat 4系(動作確認したバージョンは4.1.29)では発生しませんが、仕様に従って修正することをお薦めいたします。
特集2 第6章「StrutsTestCase for JUnitでテスト駆動開発」
119ページの「テストケース4:ユーザ名に空文字を設定すると、Errorsオブジェクトにエラーメッセージが設定される」のテストをパスしているにもかかわらず、誌面のコードをデプロイしてユーザ名に空文字を設定すると、ClassCastExceptionが発生しTomcatのエラー画面が表示されます。
StrutsTestCaseは、主にアクションの動作をテストするため、JSPを通してできたページが思惑どおりに正しく表示されるかまではテストできません(これらのテストを行おうと思った場合は、HttpUnitなどのWebサーバから戻ってきた値を検査するようなものが適していると思います)。
今回の場合、EasyStrutsが自動生成したlogin.jspでは、ActionErrorオブジェクトを表示するような設定になっていたため、誌面のコードではエラーとなってしまいます。
以下のように訂正をお願いいたします(サンプルアプリには反映済みです)。
119ページ リスト8 LoginActionTest.java
誤 | verifyActionErrors(new String[]{"username is Empty"}); |
---|---|
正 | verifyActionErrors(new String[]{"user.Empty"}); |
119ページ リスト9 LoginForm.java
誤 | errors.add("username", new ActionMessage("username is Empty")); |
---|---|
正 | errors.add("username", new ActionError("user.Empty")); |
ログインWebアプリケーションを動作させる場合には、加えて以下のメッセージファイルが必要になります(サンプルアプリには反映済みです)。
com.sample.struts.ApplicationResources.propertiesファイル
追加 | user.Empty=username is Empty |
---|