質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Spring

Spring Framework は、Javaプラットフォーム向けのオープンソースアプリケーションフレームワークです。 Java Platform上に、 Web ベースのアプリケーションを設計するための拡張機能が数多く用意されています。

TERASOLUNA

TERASOLUNA(テラソルナ)はNTTデータの独自フレームワークです。 比較的大規模なシステム開発における 開発手順・フレームワーク・サポートなどの製品群により構成されています。

Q&A

0回答

664閲覧

spring 一覧の入力フォームの入力チェック時のメッセージの表示方法

montai21

総合スコア15

Spring

Spring Framework は、Javaプラットフォーム向けのオープンソースアプリケーションフレームワークです。 Java Platform上に、 Web ベースのアプリケーションを設計するための拡張機能が数多く用意されています。

TERASOLUNA

TERASOLUNA(テラソルナ)はNTTデータの独自フレームワークです。 比較的大規模なシステム開発における 開発手順・フレームワーク・サポートなどの製品群により構成されています。

0グッド

0クリップ

投稿2020/05/12 13:14

#やりたいこと
サーバ側から渡されるリストの値をもとに動的に一覧を作り、一覧に表示される要素は編集ができるようにinputタグとして出力する画面を作っています。更新ボタンを押した際に各入力フォームに対して入力チェックを行い、外出しにしているpropertyファイルからメッセージを出力したいと考えています。

#わからないこと
form:errorsタグのpath属性にフォーム(form)のプロパティ名(property)を記述することで、propertyファイルでバリデーションの種類.フォーム名.項目名(例:Size.form.property、Sizeの部分はjavax.validationの種類に応じて変更する内容)でメッセージ名を指定することで、入力チェック時にメッセージを出力できるようにspring frameworkを用いてしています。
ただ一覧として動的にinputタグのname属性を作成しているため、バリデーションの種類.フォーム名.項目名(例:Size.form.property)に一致しなくなります(1行目のレコードだとform[0].property、2行目form[1].property・・・)。
一覧の入力フォームに対して、入力チェックを行った際に、propertyファイルに定義されているメッセージを表示させるにはどのようにすればよいでしょうか?
以下に現時点でのソースを載せております。

#form

public class ScheduleForm implements Serializable{ @Size(min = 1, max = 100) private String taskContent; @Pattern(regexp="^([0-1][0-9]|[2][0-3]):[0-5][0-9]$") private String startTime; @Pattern(regexp="^([0-1][0-9]|[2][0-3]):[0-5][0-9]$") private String endTime;   }

#jsp

<c:forEach items="${scheduleListForm.scheduleFormList}" var="schedule" varStatus="status"> <tr> <td class="td-checkbox"><form:checkbox path="scheduleFormList[${status.index}].checkbox"/></td> <td> <form:input path="scheduleFo rmList[${status.index}].taskContent" cssClass="form-control"/> <form:errors path="scheduleFormList[${status.index}].taskContent" cssClass="error"/> </td> <td> <form:input path="scheduleFormList[${status.index}].startTime" cssClass="form-control"/> <form:errors path="scheduleFormList[${status.index}].startTime" cssClass="error"/> </td> <td> <form:input path="scheduleFormList[${status.index}].endTime" cssClass="form-control"/> <form:errors path="scheduleFormList[${status.index}].endTime" cssClass="error"/> </td> <form:hidden path="scheduleFormList[${status.index}].taskId"/> </tr> </c:forEach>

#propertyファイル

Size.scheduleListForm.taskContent=タスクは1文字から100文字以内で入力してください。 Pattern.scheduleListForm.startTime=開始時間は0000から2359の形式で入力してください。 Pattern.scheduleListForm.endTime=終了時間は0000から2359の形式で入力してください。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

m.ts10806

2020/05/12 13:17

結局はSpringというよりTERASOLUNAですよね?
montai21

2020/05/13 11:47

そうですねー
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問