各入力フィールドにえらーを表示
エラーメッセージをそれぞれの入力フィールドの近くに表示するように、HTMLテンプレートを変更する。
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="UTF-8">
<title>top page</title>
<meta http-equiv="Content-type" content="text/html; charset=UTF-8" />
<style type="text/css">
h1 {
font-size: 18pt;
font-weight: bold;
color: gray;
}
body {
font-size: 13pt;
color: gray;
margin: 5px 25px;
}
pre {
border: solid 3px #ddd;
padding: 10px;
}
tr {
margin: 5px;
}
th {
padding: 5px;
color: white;
background: darkgray;
}
td {
padding: 5px;
color: black;
background: #f0f0f0;
}
.err {
color: red;
}
</style>
</head>
<body>
<h1>MyData page</h1>
<p th:text="${msg}"></p>
<form method="post" action="/mydata" th:object="${formModel}">
<table>
<tr>
<td><label for="name">名前</label></td>
<td>
<input type="text" name="name" th:value="*{name}"
th:errorclass="err" />
<div th:if="${#fields.hasErrors('name')}" th:errors="*{name}"
th:errorclass="err"></div>
</td>
</tr>
<tr>
<td><label for="age">年齢</label></td>
<td>
<input type="text" name="age" th:value="*{age}"
th:errorclass="err"/>
<div th:if="${#fields.hasErrors('age')}" th:errors="*{age}"
th:errorclass="err"></div>
</td>
</tr>
<tr>
<td><label for="mail">メール</label></td>
<td>
<input type="text" name="mail" th:value="*{mail}"
th:errorclass="err"/>
<div th:if="${#fields.hasErrors('mail')}" th:errors="*{mail}"
th:errorclass="err"></div>
</td>
</tr>
<tr>
<td><label for="memo">メモ</label></td>
<td><textarea name="memo" th:value="*{memo}" rows="5" cols="20"></textarea></td>
</tr>
<tr>
<td></td>
<td><input type="submit" /></td>
</tr>
</table>
</form>
<hr />
<table>
<tr>
<th>ID</th><th>名前</th><th>編集</th><th>削除</th>
</tr>
<tr th:each="obj : ${datalist}">
<td th:text="${obj.id}"></td>
<td th:text="${obj.name}"></td>
<td><a th:href="@{'/edit/' + ${obj.id}}">編集</a></td>
<td><a th:href="@{'/delete/' + ${obj.id}}">削除</a></td>
</tr>
</table>
<pre th:text="${data}"></pre>
</body>
</html>
エラーメッセージを日本語で表示する
バリデーション条件を指定するアノテーションにmessageパラメータを追加することで、メッセージをカスタマイズできる。
package jp.abc;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.validation.constraints.Email;
import javax.validation.constraints.Max;
import javax.validation.constraints.Min;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
@Entity
public class MyData {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column
@NotNull
private long id;
@Column(length = 50, nullable = false)
@NotEmpty(message="空白は不可")
private String name;
@Column(length = 200, nullable = true)
@Email(message="メールアドレスのみ")
private String mail;
@Column(nullable = true)
@Min(value=0, message="0以上")
@Max(value=200, message="200以下")
private Integer age;
@Column(nullable = true)
private String memo;
public long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getMail() {
return mail;
}
public void setMail(String mail) {
this.mail = mail;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
public String getMemo() {
return memo;
}
public void setMemo(String memo) {
this.memo = memo;
}
}
プロパティーファイルを用意してメッセージをまとめて扱う
バリデーション用アノテーションに message 引数を追加してメッセージをカスタマイズする方法とは別に、プロパティーファイルを使う方法がある。
resources フォルダにValidationMessages.properties ファイルを作成する。
作成したファイルを右クリックして[次で開く]-[Limyプロパティーエディター]を選択する。

プロパティーファイルの内容はバリデーション用アノテーションのクラス名に続けて「.message = 」を追加して、右辺にカスタマイズしたメッセージを記述する。
MinとMaxは、アノテーションにvalue引数で渡した値を {value} で受け取って表示できる。
javax.validation.constraints.NotEmpty.message = 空白は不可です。
javax.validation.constraints.Email.message = メールアドレスではありません。
javax.validation.constraints.Min.message = {value}より大きくしてください。
javax.validation.constraints.Max.message = {value}より小さくしてください。
HSQLDBサーバーを起動する
HSQLDBをダウンロードする。
検索して公式サイトからhsqldb-2.4.1.zip をダウンロードする。
ZIPファイルを解凍したフォルダを、C:\pleiades\ に置く。
デスクトップに起動用BATファイル hsqldb.bat を作成する。
cd C:\pleiades\hsqldb-2.4.1\hsqldb\lib java -cp hsqldb.jar org.hsqldb.Server --database.0 db/mydata --dbname.0 mydata
Macの人は、「書類」フォルダにHSQLDBを解凍する。
書類フォルダなどにテキストファイル hsqldb.sh を作成する。
#!/bin/sh cd ~/Documents/hsqldb/lib java -cp hsqldb.jar org.hsqldb.Server --database.0 db/mydata --dbname.0 mydata
hsqldb.sh を作成後、ターミナルで以下のコマンドを実行する。
$ cd ~/Documents # chmod +x ./hsqldb.sh
hsqldb.bat をダブルクリックすると、HSQLDBサーバーが起動する。
コマンドプロンプトの画面を閉じるとHSQLDBサーバーが終了するので閉じないこと。
誤って閉じないように最小化しておく。
application.properties ファイルに以下の内容を記述する。
spring.datasource.url=jdbc:hsqldb:hsql://localhost/mydata spring.datasource.username=sa spring.datasource.password= spring.datasource.driver-class-name=org.hsqldb.jdbc.JDBCDriver spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.HSQLDialect