ページの先頭行へ戻る
 Formcoordinatorユーザーズガイド

7.1.3 電子フォームのドロップダウンリストボックス項目の選択リストを変更するには

Web アプリケーションで電子フォームに設定されている、ドロップダウンリストボックス項目の選択リストを使用しないで変更できます。変更するには、ItemAttributeAccessクラスを使用して選択リストを指定します。

例:

import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import javax.servlet.ServletException;
import com.fujitsu.form.*;

public class SampleServlet extends HttpServlet {

  public void doPost(HttpServletRequest request,
                         HttpServletResponse response)
    throws IOException,ServletException
  {
    try{
      OutputDataBuilder odb =
      new OutputDataBuilder(
          request,java.net.URLEncoder.encode(
          "file:///c:/pmd",System.getProperty("file.encoding")), "sample");
      //SolarisおよびLinuxの場合は以下のように記述します。
      //   "file:////home/pmd",System.getProperty("file.encoding")), "sample");

      // 雛形からXmlDataAccessオブジェクトを生成します。
      // また、「項目制御情報」をルートとします。
      // ItemAttributeAccessオブジェクトを生成します。
      XmlDataAccess xda = new XmlDataAccess(odb.getTemplateXMLData());
      ItemAttributeAccess iaa = new ItemAttributeAccess("項目制御情報");

      // ドロップダウンリストボックス項目に選択リストのデータを設定します。
      //   ・ドロップダウンリストボックス項目の1番目の選択リストに
      //     「東京本店」を設定します。
      //   ・ドロップダウンリストボックス項目の2番目の選択リストに
      //     「大阪支店」を設定します。
      //   ・ドロップダウンリストボックス項目の3番目の選択リストに
      //     「名古屋支店」を設定します。
      String 本支店名[] = new String[3];
      本支店名[0] = "東京本店";
      本支店名[1] = "大阪支店";
      本支店名[2] = "名古屋支店";
      iaa.setListBoxValue("ドロップダウンリストボックス項目名",本支店名);

      // ドロップダウンリストボックス項目の選択リストに
      // 「大阪支店」を選択します。
      xda.setValue("ドロップダウンリストボックス項目名","大阪支店");

      // 上記で設定したデータをOutputDataBuilderオブジェクトに設定します。
      odb.setXMLData(xda.getDocument(), true);
      odb.setItemAttribute(iaa.getDocument());
      odb.write(response.getOutputStream());
    }
    catch(Exception e){
      // 例外処理
                    ・
                    ・
                    ・
    }
  }
}

注意

  • ドロップダウンリストボックスを動的に変更すると、変更後は選択リストの先頭の値が選択されます。なお、電子フォームで指定した選択リストの初期値が変更後の選択リストに存在した場合はその初期値が選択されます。特定の選択肢を選択したい場合は、変更した選択リストに存在する初期値をOutputDataBuilderクラスに指定してください。

  • ドロップダウンリストボックスの選択リストに新しく設定する値に対して入力値チェックは行われません。選択リストに入力値エラーとなる値を設定すると、送信時や署名送信時に入力値エラーとなり、送信が行えなくなる場合があります。

  • 読み込み機能を利用して保存したデータを読み込むときに、ドロップダウンリストボックスの選択リスト内に保存された値と一致する選択肢がない場合、読み込みは行われないで、先頭の選択肢(インデックス番号1の選択肢)が選択されます。

このため、ドロップダウンリストボックスの値が読み込まれていないことをユーザに知らせるなどの対処が必要です。

例:

入力必須を使用したエラーメッセージによる警告を行う場合
選択リストを更新するドロップダウンリストボックスに、入力必須チェックを指定します。
また、選択リストを更新する際には、必ず先頭の選択肢(インデックス番号1の選択肢)を改行だけにします。
この設定で読み込みを行うと、データが選択リストにない場合は、先頭の改行だけの選択肢が選択されます。このまま送信や保存を行うと、入力必須エラーとなりエラーメッセージが表示されます。