添付ファイル

添付ファイルを扱うには、S2Maiで提供している、org.seasar.mai.mail.AttachedFileを使います。

コンストラクタとして、下記が用意されています。

  1. AttachedFile(File file)
  2. AttachedFile(File file, String fileName)
  3. AttachedFile(InputStream inputStream, String fileName)
  4. AttachedFile(URL url, String fileName)

それぞれ第二引数でファイル名を設定しますが、適切な拡張子が必要となります。Fileのみを指定した場合は、そのファイル名がセットされます。

動作を保証するために、一応それぞれの設定値のsetterは用意してません。getterはあります。

POJOに添付ファイルプロパティを追加しましょう。

public class TestData{
    private String name;
    private AttachedFile file;
    (setter、getter省略)
}

プロパティ名は何でも構いません。型がAttachedFileであれば添付ファイルと見なします。

また、複数指定の場合は配列もサポートしています。さらに、プロパティを複数構えても大丈夫です。

public class TestData{
    private String name;
    private AttachedFile file;
    private AttachedFile[] files;
    (setter、getter省略)
}

fileとfilesのそれぞれにセットされたファイルが添付されます。

また、型をListにした場合は、このままだと要素の型が不確定のため無視されますが、プロパティ名を「attachedFile」と云う名前にすれば、添付ファイルとして扱います。

public class TestData{
    private String name;
    private List attachedFile;
    (setter、getter省略)
}

勿論、この「attachedFile」と云うプロパティ名は、単体AttachedFileでも配列でも付けて構いません。

ただし、ジェネリクスを用いた場合はこの規約を守らなくてもOKです。要素の型が保証されますので、プロパティ名は自由に付けられます。

public class TestData{
    private String name;
    private List<AttachedFile> fileList;
    (setter、getter省略)
}

このジェネリクスのサポートを使いたい場合は、s2-tiger.jarをクラスパスに含める必要があります。また、s2-tigerEJBに依存しているため、EJB実装が必要となります。

geronimo-j2ee_1.4_spec-1.0.jarは、tomcatで使う場合、servletAPIが含まれているのでjarごと無視されるそうなので、geronimo-ejb_2.1_spec-1.0.jarを別途用意するのが吉なようです。

勿論動かすサーバがJ2EEにフルに対応していたら不要です。この件に関してはこちらを。

http://s2container.seasar.org/ja/setup.html

ややこしければ、プロパティ名を「attachedFile」としてしまえば、素のまんまで動きますので。typoしやすそうだけど(それがプロパティ名なんでもOK機能を付けた理由)。

さて、Tigerと云えばTigerアノテーションですが、S2MaiにもTigerアノテーションがあります。これまたつづく。

つか、わかりやすいですかー?

つづきはこちら
http://d.hatena.ne.jp/rokugen/20061205