Struts2.1.6でのファイルアップロード

画像UploadをModelDrivenで受け取る必要があったので。

JSP
色々割愛。

<s:form action="#" method="post" enctype="multipart/form-data">
 <s:file name="itemImg" id="button3" label="File"  />
</s:form>

●Action

public class ImageUploadAction implements ModelDriven<ImageUploadModel> {

    private static final long serialVersionUID = 1L;

    private ImageUploadModel model = new ImageUploadModel();

    public String execute() throws Exception {
        //TODO なんか処理。
        return SUCCESS;
    }

    @Override
    public SupplierItemInfoImageModifyModel getModel() {
        return model;
    }
}

●Model

public class ImageUploadModel implements Serializable {
  private File itemImg;
  private String itemImgContentType; //←使わなかったら無くてもOK
  private String itemImgFileName; //←使わなかったら無くてもOK
  private String fileCaption; //←使わなかったら無くてもOK

  …
  と、↑これらのアクセサ。
  …
}

わかった事は
・formタグにenctype="multipart/form-data"付ける。
・fileタグにlabel="File"付ける。
・fileタグのname属性とFileの実態の名前を合わせる。
・ContentTypeとFileNameはfileタグのname属性で指定した文字列頭につけてあげる。
・もちろんModelDrivenでも使える。
・受け取るFile以外必要なければアクセサなくても大丈夫。
・fileCaptionって何だ?今回何やっても取れなかった。

参考サイト
http://www.roseindia.net/struts/struts2/struts-2-file-upload.shtml