Aipoの各ポートレットのバリデート処理

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にテンプレートに表示する文字列をセットするようにします。