添付ファイル
添付ファイルを扱うには、S2Maiで提供している、org.seasar.mai.mail.AttachedFileを使います。
コンストラクタとして、下記が用意されています。
- AttachedFile(File file)
- AttachedFile(File file, String fileName)
- AttachedFile(InputStream inputStream, String fileName)
- 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-tigerはEJBに依存しているため、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アノテーションがあります。これまたつづく。
つか、わかりやすいですかー?