簡易書籍登録アプリケーション作成(バリデーション版)

7.2 簡易書籍登録アプリケーション作成(バリデーション版)

7.2.1 アプリケーション概要

1 アプリケーション作成の目的

6.5で作成したプロジェクトをもとに、バリデーションの利用方法を学習していきます。

2 簡易書籍登録アプリケーション(バリデーション版)プロジェクト構成(完成状態)

3 プロジェクトフォルダ直下の「pom.xml」に以下の部分を追記する。

7.2.2 エンティティクラスの修正

1 「Book.java」クラスファイルに以下に示すソースコードを追記する。

■ソースコード
【ファイル名:Book.java】

1package jp.co.f1.spring.bms.entity;
2 
3import jakarta.persistence.Entity;
4import jakarta.persistence.Table;
5import jakarta.persistence.Id;
6import jakarta.persistence.Column;
7import jakarta.validation.constraints.NotEmpty;
8 
9@Entity
10@Table(name="bookinfo")
11public class Book {
12 
13    // ISBN
14    @Id
15    @Column(length = 20)
16    @NotEmpty(message="ISBNを入力してください")
17    private String isbn;
18 
19    public String getIsbn() {
20        return isbn;
21    }
22 
23    public void setIsbn(String isbn) {
24        this.isbn = isbn;
25    }
26 
27    // タイトル
28    @Column(length = 100, nullable = true)
29    @NotEmpty(message="タイトルを入力してください")
30    private String title;
31 
32    public String getTitle() {
33        return title;
34    }
35 
36    public void setTitle(String title) {
37        this.title = title;
38    }
39 
40    // 価格
41    @Column(length = 11, nullable = true)
42    @NotEmpty(message="価格を入力してください")
43    private String price;
44 
45    public String getPrice() {
46        return price;
47    }
48 
49    public void setPrice(String price) {
50        this.price = price;
51    }
52     
53}

7.2.3 コントローラークラスの修正

1 「BmsController」クラスファイルに以下に示すソースコードを追記する。

■ソースコード
【ファイル名:BmsController.java】

1package jp.co.f1.spring.bms.controller;
2 
3import org.springframework.stereotype.Controller;
4import org.springframework.web.bind.annotation.GetMapping;
5import org.springframework.web.bind.annotation.PostMapping;
6import org.springframework.web.bind.annotation.ModelAttribute;
7import org.springframework.web.servlet.ModelAndView;
8import org.springframework.beans.factory.annotation.Autowired;
9import org.springframework.validation.BindingResult;
10import org.springframework.validation.annotation.Validated;
11 
12import jp.co.f1.spring.bms.repository.BookRepository;
13import jp.co.f1.spring.bms.entity.Book;
14 
15@Controller
16public class BmsController {
17 
18    // Repositoryインターフェースを自動インスタンス化
19    @Autowired
20    private BookRepository bookinfo;
21 
22    /*
23     * 「/list」へアクセスがあった場合
24     */
25    @GetMapping("/list")
26    public ModelAndView list(ModelAndView mav) {
27        // bookinfoテーブルから全件取得
28        Iterable<Book> book_list = bookinfo.findAll();
29 
30        // Viewに渡す変数をModelに格納
31        mav.addObject("book_list", book_list);
32 
33        // 画面に出力するViewを指定
34        mav.setViewName("list");
35 
36        // ModelとView情報を返す
37        return mav;
38 
39    }
40 
41    /*
42     * 「/insert」へアクセスがあった場合
43     */
44    @GetMapping("/insert")
45    public ModelAndView insert(@ModelAttribute Book book, ModelAndView mav) {
46 
47        // Viewに渡す変数をModelに格納
48        mav.addObject("book", book);
49 
50        // 画面に出力するViewを指定
51        mav.setViewName("insert");
52 
53        // ModelとView情報を返す
54        return mav;
55    }
56 
57    /*
58     * 「/insert」へPOST送信された場合
59     */
60    @PostMapping(value = "/insert")
61    // POSTデータをBookインスタンスとして受け取る
62    public ModelAndView insertPost(@ModelAttribute @Validated Book book, BindingResult result, ModelAndView mav) {
63        // 入力エラーがある場合
64        if (result.hasErrors()) {
65            // エラーメッセージ
66            mav.addObject("message", "入力内容に誤りがあります");
67 
68            // 画面に出力するViewを指定
69            mav.setViewName("insert");
70 
71            // ModelとView情報を返す
72            return mav;
73        }
74 
75        // 入力されたデータをDBに保存
76        bookinfo.saveAndFlush(book);
77 
78        // リダイレクト先を指定
79        mav = new ModelAndView("redirect:/list");
80 
81        // ModelとView情報を返す
82        return mav;
83    }
84}

7.2.4 テンプレートファイルの作成

1 「insert.html」ファイルに以下に示すソースコードを記述する。

■ソースコード
【ファイル名:insert.html】

7.2.5 アプリケーションの実行

1 XAMPP(MariaDB)の起動
2 アプリケーションの実行
3 アプリケーションにアクセス(書籍一覧画面)

以下のアドレスから簡易書籍一覧表示アプリケーションにアクセスします。
URL:http://localhost:8080/insert

図 7.2 1:アプリケーションアクセス画面(書籍登録画面で何も入力せず、登録ボタンクリック)


図 7.2 2:アプリケーションアクセス画面(再度書籍登録画面が表示され、エラーメッセージが表示される)



NEXT>> 7.3 簡易書籍登録アプリケーションの説明(バリデーション版)

f