注釈によってアクションに FileUploadInterceptor を設定しようとしています:
@Namespace("/")
@ParentPackage("my-package")
@Result(name = "success", location = "/WEB-INF/jsp/result.jsp")
@InterceptorRef("fileUpload")
public class UploadAction extends ActionSupport {
private File upload;
private String uploadContentType;
private String uploadFileName;
public void setUpload(File upload) {
this.upload = upload;
}
public void setUploadContentType(String uploadContentType) {
this.uploadContentType = uploadContentType;
}
public void setUploadFileName(String uploadFileName) {
this.uploadFileName = uploadFileName;
}
public File getUpload() {
return this.upload;
}
public String getUploadContentType() {
return this.uploadContentType;
}
public String getUploadFileName() {
return this.uploadFileName;
}
@Override
@Action("doUpload")
public String execute()
{
System.out.println("Upload ok : " + (this.upload != null));
return SUCCESS;
}
}
私の問題は、アクションクラスにインターセプターを設定しない場合にのみ機能することです。上記のように FileUploadInterceptor であっても、インターセプターを設定するとすぐに、属性は入力されません。
基本的に、これは機能します:
public class UploadAction extends ActionSupport {...
しかし、これは機能しません:
@InterceptorRefs({
@InterceptorRef("fileUpload")
})
public class UploadAction extends ActionSupport {...
また
@InterceptorRefs({
@InterceptorRef("fileUpload"),
@InterceptorRef("myOtherinterceptor")
})
public class UploadAction extends ActionSupport {...
見つけた!解決策は次のとおりです。
@InterceptorRefs({
@InterceptorRef("fileUpload"),
@InterceptorRef("basicStack")
})
public class UploadAction extends ActionSupport {...