1. 概要

このクイックチュートリアルでは、 Spring MVCのフォームの使用を開始し、同じURIにマッピングするボタンをJSPフォームにもう1つ追加します。

2. 簡単な要約

以前、従業員の詳細を入力してメモリに保存するための小さなWebアプリケーションを作成しました。

最初に、エンティティをバインドするモデル Employee を作成し、次にフローとマッピングを処理する EmployeeController を作成し、最後に、employeeHomeという名前のビューを作成しました。ユーザーが入力値を入力するためのフォーム。

このフォームには、 Submit という単一のボタンがあり、addEmployeeと呼ばれるコントローラーのRequestMappingにマップされ、モデルを使用してユーザーが入力した詳細をメモリ内データベースに追加します。

次のいくつかのセクションでは、コントローラーの同じRequestMappingパスを使用して、同じフォームに別のボタン[キャンセル]を追加する方法を説明します。

3. フォーム

まず、フォームemployeeHome.jspに新しいボタンを追加しましょう。

<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form"%>
...
<body>
    <h3>Welcome, Enter The Employee Details</h3>
    <h4>${message}</h4>
    <form:form method="POST" action="${pageContext.request.contextPath}/addEmployee" 
      modelAttribute="employee">
        <table>
            ...
            <tr>
                <td><input type="submit" name="submit" value="Submit" /></td>
                <td><input type="submit" name="cancel" value="Cancel" /></td>
            </tr>
...

ご覧のとおり、既存の[送信]ボタンに属性名を追加し、[キャンセル]に設定された名前の別の[キャンセル]ボタンを追加しました。

また、ページ上部にモデル属性メッセージを追加しました。これは、キャンセルをクリックすると表示されます。

4. コントローラー

次に、 controller を変更して、新しい属性paramRequestMappingに追加し、2つのボタンクリックを区別します。

@RequestMapping(value = "/addEmployee", method = RequestMethod.POST, params = "submit")
public String submit(@Valid @ModelAttribute("employee") final Employee employee, 
  final BindingResult result, final ModelMap model) {
        // same code as before
}
@RequestMapping(value = "/addEmployee", method = RequestMethod.POST, params = "cancel")
public String cancel(@Valid @ModelAttribute("employee") final Employee employee, 
  final BindingResult result, final ModelMap model) {
    model.addAttribute("message", "You clicked cancel, please re-enter employee details:");
    return "employeeHome";
}

ここでは、既存のメソッド submitに新しいパラメータパラメータを追加しました。特に、その値はフォームで指定されたnameと同じです。

次に、同様の署名を持つ別のメソッド cancel を追加しました。唯一の違いは、cancelとして指定されたパラメーターparamsです。 以前と同様に、これは、JSPフォームのキャンセルボタンの名前とまったく同じ値です。

5. テスト

テストするために、TomcatなどのWebコンテナーにプロジェクトをデプロイします。

URL http:// localhost:8080 / spring -mvc-forms / employee、を押すと、次のように表示されます。

キャンセルを押すと、次のように表示されます。

ここでは、コントローラーのメソッドcancelでコーディングしたメッセージが表示されます。

送信をクリックすると、入力された従業員情報が以前と同じように表示されます

6. 結論

このチュートリアルでは、コントローラー上の同じRequestMappingにマップするSpringMVCアプリケーションの同じフォームに別のボタンを追加する方法を学習しました。

コードスニペットに示されているのと同じ手法を使用して、必要に応じてボタンを追加できます。

いつものように、ソースコードはGitHubから入手できます。