// 下階層用テンプレート #topicpath ---- //ここにコンテンツを記述します。 #contents たとえば <textarea name="summary" ></textarea> このテキストエリアに対して必須項目であるというバリデーションをすることを考えます。Slim3はサーバサイドのバリデーションは、Controllerクラス内で Validators の public boolean validate(); メソッドを呼びだすことで行います。 といっても単純で、 @Override public Navigation run() throws Exception { //なんか処理 if (validate()) { // バリデーションチェックOKの場合、業務ロジック return forward("/index"); } else { // チェックNGの場合、元の画面へ戻る return forward("/input.jsp"); } } private boolean validate() { if (!isPost()) { return false; } Validators v = new Validators(request); v.add("summary", v.required()); v.add("author", v.required()); // v.add("reportDateStr", // v.required(), // v.dateType("yyyy/MM/dd"), // v.regexp("^\\d{4}/\\d{2}/\\d{2}$")); return v.validate(); } などのようにValidatorsクラスに、どのフィールドをどのようなタイプのチェックを行うかを指定するだけです。 ロジック側は以上であとはView側です。JSPでは、 <textarea name="summary" >${f:h(summary)}</textarea> ${f:h(errors.summary)} のように指定すればOKです。summaryというフィールドのバリデーションチェックエラー時は、errors.summaryという変数にエラーメッセージが格納されます。 結果は、以下の通りとなります。 <textarea name="summary" ></textarea> summaryは必須です。 **エラーをいっぺんに表示する [#wcf24243] 先ほど ${f:h(errors.summary)} のようにフィールド名指定でエラー出力を行いましたが、発生したエラーをいっぺんに表示するには以下のようにします。 <ul> <c:forEach var="e" items="${f:errors()}"> <li>${f:h(e)}</li> </c:forEach> </ul> **エラー時のみCSSで装飾する [#c42d8c8b] エラー時のみエラー用のスタイルシートを適用したいなんておもいますが、以下のようにすれば良いです <textarea name="summary" class="${f:errorClass('summary', 'error')}">${f:h(summary)}</textarea> summaryフィールドがエラーになったとき、"error"というスタイルシートを適用します。ようするに <textarea name="summary" class="error"></textarea> となります。エラーでない場合は <textarea name="summary" class=""></textarea> となります。 -[[バリデーション - Slim3 日本語サイト(非公式)>http://sites.google.com/site/slim3documentja/documents/slim3-controller/validation]] ***関連リンク [#n6ad0cf5] ---- この記事は #vote(おもしろかった,そうでもない) #comment #topicpath SIZE(10){現在のアクセス:&counter;}