FrontPage > Spring Bootの覚書
エラーメッセージの表示 †
入力チェックで作成したソースを利用して説明する。
1. 入力チェックのエラーメッセージ †
2. 入力チェック以外のエラーメッセージ †
- 表示したいエラーメッセージをメッセージファイルに設定する。
(src/main/resources/messages.properties抜粋)
message.err.sample=エラーが発生しました。{0}
- コントローラクラスでエラーメッセージをセットする。
(例 src/main/java/com/ziqoo/sbSample/web/ValidSampleContrller.java抜粋)
@RequestMapping(value="/validSample", method = RequestMethod.POST)
public String postValidSample(@ModelAttribute("form") @Validated ValidSampleForm form, BindingResult result, Model model) {
if (result.hasErrors()) {
for(FieldError err: result.getFieldErrors()) {
log.debug("error code = [" + err.getCode() + "]");
}
}
// 何らかの処理
// if (エラー発生) {
result.reject("com.ziqoo.err.sample",new Object[]{"ふふふ"}, "default Message");
// }
return "validSample";
}
- 画面での表示
入力チェックでの「4. エラーメッセージの一覧表示」と同じ
${e.global}がtrueとなる。
(src/main/resources/templates/validSample.html抜粋)
<form th:action="@{/validSample}" th:object="${form}" method="post">
<ul>
<li th:each="e : ${#fields.detailedErrors()}"
th:class="${e.global}? globalerrMsg : fielderrMsg"
th:text="${e.message}" />
</ul>
- 実行結果
表示方法いろいろ †
- すべてのエラーを表示する。
<div th:if="${#fields.hasAnyErrors()}">
<p th:each="err : ${#fields.allErrors()}" th:text="${err}">...</p>
</div>
- Global errorsnのみ表示する。
(その1)
<ul th:if="${#fields.hasErrors('global')}">
<li th:each="err : ${#fields.errors('global')}" th:text="${err}"></li>
</ul>
(その2)
<ul th:if="${#fields.hasGlobalErrors()}">
<li th:each="err : ${#fields.globalErrors()}" th:text="${err}"></li>
</ul>