#やりたいこと
サーバ側から渡されるリストの値をもとに動的に一覧を作り、一覧に表示される要素は編集ができるように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の形式で入力してください。
あなたの回答
tips
プレビュー