Aipoで登録、編集の際に、バリデート処理を行いますが、バリデート処理を追加するには以下を変更します。
FormDataのsetValidator()において各フィールドの制約条件をセットする。
protected void setValidator() { // カテゴリ名必須項目 thema_name.setNotNull(true); // カテゴリ名文字数制限 thema_name.limitMaxLength(50); // メモ文字数制限 description.limitMaxLength(1000); }
次にvalidate(List<String> msgList)内でフォームの検証を行う。
protected boolean validate(List<String> msgList) { try { SelectQuery<EipTBlogThema> query = Database.query(EipTBlogThema.class); if (ALEipConstants.MODE_INSERT.equals(getMode())) { Expression exp = ExpressionFactory.matchExp( EipTBlogThema.THEMA_NAME_PROPERTY, thema_name.getValue()); query.setQualifier(exp); } else if (ALEipConstants.MODE_UPDATE.equals(getMode())) { Expression exp1 = ExpressionFactory.matchExp( EipTBlogThema.THEMA_NAME_PROPERTY, thema_name.getValue()); query.setQualifier(exp1); Expression exp2 = ExpressionFactory.noMatchDbExp( EipTBlogThema.THEMA_ID_PK_COLUMN, Integer.valueOf(thema_id)); query.andQualifier(exp2); } if (query.fetchList().size() != 0) { msgList.add("テーマ名『 <span class='em'>" + thema_name + "</span> 』は既に登録されています。"); } } catch (Exception ex) { logger.error("blog", ex); return false; } // テーマ名 thema_name.validate(msgList); // メモ description.validate(msgList); return (msgList.size() == 0); }
msgListにテンプレートに表示する文字列をセットするようにします。