Как использовать FileUploadInterceptor с плагином соглашения Struts2 - PullRequest
0 голосов
/ 09 февраля 2012

Я пытаюсь установить 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 {...

1 Ответ

0 голосов
/ 09 февраля 2012

Если вы установите любой перехватчик, вы должны установить все перехватчики.По сути, вы отключаете все, кроме перехватчика загрузки, а это не то, что вам нужно.

Если вы собираетесь настраивать перехватчики вручную и вам нужно обратиться к нескольким перехватчикам, используйте оболочку @InterceptorRefs"аннотация согласно InterceptorRef документам .

...