Struts2 文件上传 - 未调用 execute()

Struts2 file upload - execute() is not being invoked

我正在使用 Struts2 2.5.20 并编写了一个几乎可以运行的文件上传操作。我可以在调试器中看到正在调用 setReport()、setReportContentType() 和 setReportFileName(),并且参数值正确。但是,永远不会调用 execute() 方法。我试过顺着调用栈看应该在哪里调用,可是层层叠叠的拦截器找不到底

有谁知道 execute() 的原因是什么?

public class ImportReportAction extends CampaignerActionSupport implements ValidationAware
{
  private File              report;
  private String            reportContentType;
  private String            reportFileName;


  @Override
  public String execute() throws Exception
  {
    ...
    return SUCCESS;
  }

  public void setReport(
    File report)
  {
    this.report = report;
  }   

  public void setReportContentType(
    String reportContentType)
  {
    this.reportContentType = reportContentType;
  }

  @RequiredFieldValidator(type = ValidatorType.FIELD, key = "errors.required", messageParams = { "getText('labels.report.file')" })
  public void setReportFileName(
    String reportFileName)
  {
    this.reportFileName = reportFileName;
  }
}

更新:我发现问题在于 RequiredFieldValidator 注释。如果存在,验证总是失败,但 s:actionerror 标签不显示任何消息。当注释不存在时,它允许用户不选择文件并仍然调用 execute()。

新问题是:如何正确注释我的 class 以验证文件上传?

我必须删除 @RequiredFieldValidator 注释,让我的操作实现 ValidationAware,然后实现 validate() 方法并手动将验证放在那里。