フォーム上の複数の送信ボタン
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 を変更して、新しい属性paramをRequestMappingに追加し、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でから入手できます。