3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

戻る機能を作成していきましょう。

2.設計で検討した一覧機能をおさらい

1.画面遷移
一覧画面 ⇔ 登録画面 ⇔ 確認画面 → 完了画面 (→ 一覧画面)
     ⇔ 変更画面 ⇔ 確認画面 → 完了画面 (→ 一覧画面)
     →削除確認画面 → 完了画面(→ 一覧画面)

URL設計
画面名: タスク確認画面からタスク変更画面
URL: /task/back
HTTPメソッド: GET

画面遷移図にて両矢印(⇔)になっているところは、前の画面に戻ることができます。登録画面、確認画面周りで戻る処理を追加していきましょう。

controllerクラスを書いてみよう

URL設計で検討したURLをもとにcontrollerクラスのメソッドを書いていきましょう。

確認画面から登録画面に戻る際は、入力した値がクリアされないようにしたいです。そのため、確認画面で表示した値をオブジェクトで引数として受け取り、画面に表示するようにします。

    @GetMapping("/task/back")
    public String backToEditPage(TaskForm taskForm,Model model) {
    	model.addAttribute("taskForm", taskForm);
    	return "task/edit";
    }

htmlを修正しよう

次にhtmlを修正していきましょう。

まず、登録画面から一覧画面に戻る遷移では、入力値の移動がないので、htmlでリンクで遷移します。

edit.htmlの戻るボタンは以下のようになっていると思います。

<a type="button" class="btn btn-outline-secondary" href="/task/list">back</a>

hrefを修正します。

<a type="button" class="btn btn-outline-secondary" th:href="@{/task/list}">back</a>

削除確認画面から一覧画面への戻る遷移も同様の修正を行います。

確認画面から登録画面への戻る処理を追加していきます。
controllerクラスにbackメソッドを書いたので、htmlでは、このbackメソッドに値を渡してあげるような記述を行います。

修正前

        <div class="d-flex justify-content-start">
            <form th:action="@{/task/save}" method="post" th:object="${taskForm}"class="mb-3">
                <input type="hidden" name="title" th:field="*{title}">
                <input type="hidden" name="description" th:field="*{description}">
                <input type="hidden" name="deadline" th:field="*{deadline}">
                <input type="hidden" name="taskId" th:field="*{taskId}">
                <input type="hidden" name="status" th:field="*{status}">
                <input type="hidden" name="updatedAt" th:value="*{updatedAt}">
                <!-- 送信ボタン -->
                <button type="submit" class="btn btn-primary me-2" value="submit">submit</button>
            </form> 
                <button type="submit" class="btn btn-outline-secondary">back</button> 
        </div>

修正後

        <div class="d-flex justify-content-start">
            <form th:action="@{/task/save}" method="post" th:object="${taskForm}"class="mb-3">
                <input type="hidden" name="title" th:field="*{title}">
                <input type="hidden" name="description" th:field="*{description}">
                <input type="hidden" name="deadline" th:field="*{deadline}">
                <input type="hidden" name="taskId" th:field="*{taskId}">
                <input type="hidden" name="status" th:field="*{status}">
                <input type="hidden" name="updatedAt" th:value="*{updatedAt}">
                <!-- 送信ボタン -->
                <button type="submit" class="btn btn-primary me-2" value="submit">submit</button>
            </form> 
            <form th:action="@{/task/back}" method="get" th:object="${taskForm}">
				<input type="hidden" name="title" th:field="*{title}">
    			<input type="hidden" name="description" th:field="*{description}">
    			<input type="hidden" name="deadline" th:field="*{deadline}">
    			<input type="hidden" name="taskId" th:field="*{taskId}">
    			<input type="hidden" name="status" th:field="*{status}">
    			<input type="hidden" name="updatedAt" th:value="*{updatedAt}">
    			<button type="submit" class="btn btn-outline-secondary">back</button>
		    </form>
        </div>

これで戻る処理の実装は終わりです。

次の投稿では、例外処理の実装を行います。

【Java】Spring Bootを使ったToDoアプリケーションを作成しよう-①イントロダクション-
【Java】Spring Bootを使ったToDoアプリケーションを作成しよう-②設計-
【Java】Spring Bootを使ったToDoアプリケーションを作成しよう-③実装方針と環境構築-
【Java】Spring Bootを使ったToDoアプリケーションを作成しよう-④一覧機能の作成-
【Java】Spring Bootを使ったToDoアプリケーションを作成しよう-⑤新規登録機能の作成-
【Java】Spring Bootを使ったToDoアプリケーションを作成しよう-⑥変更機能の作成-
【Java】Spring Bootを使ったToDoアプリケーションを作成しよう-⑦削除機能の実装-
【Java】Spring Bootを使ったToDoアプリケーションを作成しよう-⑧戻る機能の実装-
【Java】Spring Bootを使ったToDoアプリケーションを作成しよう-⑨例外処理の実装-

3
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?