カスタム・フィールドの必須指定と最大フィールド長の宣言

validation.xml ファイルを編集することによって、カスタム・フィールドを必須フィールドとして指定できます。 すべてのカスタム・フィールドについて、最大長の定義を宣言する必要があります。

このタスクについて

注: 新しい IBM® Connections リリースにアップグレードする場合、標準の Connections 構成ファイル用のマイグレーション・ツールには、カスタム・フィールドが組み込まれていないことに注意してください。 また、IBM Connections の以前のリリースからアップグレードする場合、validation.xml ファイルも自動的にはマイグレーションされません。 このファイルは、Struts の検証フレームワークで必要とされ、IBM Connections の開始時にアクセスされます。 リリースのアップグレードを行った後もカスタムのフィールドとファイルを使用できるようにするには、『カスタマイズの保存』と『マイグレーション後のタスク』の各トピックを参照してください。

IBM Connections は Struts に基づいて構築されているため、Struts の検証フレームワークを使用してフォーム・データを検証することができます。 validation.xml ファイルと validation-rules.xml ファイルはどれも、Struts の検証フレームワークに組み込まれているファイルです。 validation.xml ファイルでは、フォームの各フィールドに適用する検証タイプを定義し、validation-rules.xml では、標準的な検証ルーチンのセットを定義します。 検証フレームワークには、requiredmaximum length などの検証ルーチンが組み込まれています。

すべてのカスタム拡張属性には、値がデータベースの制限を超えないようにするための最大長の定義が必要です。

手順

カスタム拡張フィールドを必須フィールドとして指定するには、以下の手順を実行します。

  1. was_profile_root¥installedApps¥cell_name¥profiles.ear¥lc.profiles.app.war¥WEB-INF¥validation.xml ファイルのコピーを保存します。
  2. テキスト・エディターでそのファイルを開き、以下の表の情報を使用して検証要件を指定します。
    表 1. バリデーターの属性
    属性 役割
    property 必須として指定するフィールドの名前。 レンダリング済みのページのソースを表示すれば、フィールド名を確認できます。
    depends 実行する検証の名前。
    msg name デフォルトの必須エラー・メッセージをオーバーライドします。 バリデーターの name 属性と一致する値を指定します。
    msg key 検証が失敗したときに表示するメッセージ。 検証が失敗したときに表示するエラー・メッセージをプロパティー・ファイル内のキーに組み込みます。 そのキーをプロパティー・ファイルに追加する必要があります。
    例えば、カスタム拡張属性の最大長を指定するには、次のように記述します。
    <field property="attribute(school)" depends="maxbytelength,nonce">
    <msg name="maxbytelength" key="errors.maxlength" /> 
    <arg position="0" name="maxbytelength" key="label.editprofile.contactinformation.school" />
    <arg position="1" name="maxbytelength" key="(maxbytelength)" resource="false" />
    <var>
    <var-name>maxbytelength</var-name>
    <var-value>16</var-value>
    </var>
    <var>
    <var-name>subEditForm</var-name>
    <var-value>contactInfo</var-value>
    </var>

    例:

    <form-validation>
     <formset>
      <form name="editProfileForm">
       <field property="attribute(contactInformation.extattr.property1)" depends="required">
        <msg name="required" key="errors.required" />
       </field>
       <field property="attribute(associatedInformation.description)" depends="maxlength">
        <msg name="maxlength" key="errors.aboutMe" />
         <var>
          <var-name>maxlength</var-name>
          <var-value>1500</var-value>
         </var>
       </field>
  3. 以下のコードを validation.xml ファイルに追加して、編集中のタブを Struts バリデーターで認識できるようにします。
    <var>
       <var-name>subEditForm</var-name>
       <var-value>sectionName</var-value>
    </var>
    ここで、sectionName は、以下のいずれかの値です。
    • contactInfo。 連絡先情報またはジョブ情報のフィールド。
    • aboutMe。 関連情報のフィールド。
    例:
    <form-validation>
     <formset>
      <form name="editProfileForm">
       <field property="attribute(contactInformation.extattr.property1)" depends="required">
        <msg name="required" key="errors.required" />
        <var>
          <var-name>subEditForm</var-name>
          <var-value>contactInfo</var-value>
         </var>
       </field>
       <field property="attribute(associatedInformation.description)" depends="maxlength">
        <msg name="maxlength" key="errors.aboutMe" />
         <var>
          <var-name>maxlength</var-name>
          <var-value>1500</var-value>
         </var>
         <var>
          <var-name>subEditForm</var-name>
          <var-value>aboutMe</var-value>
         </var>
       </field>
    注: これらのセクション識別子は、『編集画面フィールドのカスタマイズ』の説明にある profileEdit.ftl 表示テンプレートにも関連します。 profileEdit.ftl ファイルで指定した表示セクションは、バリデーターの属性で定義されているセクション名に対応している必要があります。
  4. 必須フィールドのラベルを定義します。 それには、拡張属性の ID (フィールドの属性定義にある .extrattr. の後の値) を書き留めます。
    例えば、次のフィールドの値は property1 です。
    <field property="attribute(contactInformation.extattr.property1)" ...>
    <extensionAttribute> エレメントの extensionIdRef 属性を設定して、profiles-config.xml ファイルのフィールドを、ここで書き留めた値と等しい値で定義します。 詳しくは、『プロファイルのカスタム拡張属性の有効化』を参照してください。
    注: 必須の属性フィールドを非表示にしないでください。ユーザーがプロファイルの連絡先情報を編集した場合、そのユーザー・タイプの必須フィールド情報が非表示になっていると、編集したプロファイル・フォームを保存できなくなります。

    ラベルの定義は、追加するすべてのカスタム・フィールドについて行う必要がありますが、必須フィールドのラベルを定義することは特に重要です。その理由は、ユーザーが必須フィールドに値を入力せずにフォームの保存を試みたときに、x は必須であるというメッセージが表示されますが、x にはフィールド・ラベルが使用されるからです。 フィールドのラベルが定義されていない場合は、null という語が代わりに使用されます。 その結果、ユーザーがページを保存しようとすると、null は必須であるというメッセージが表示され、ページを正常に保存するためにどのフィールドに値を入力すればよいのか分からなくなります。