gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 18:25:57 25 4
gpt4 key购买 nike

我正在使用 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()。

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

最佳答案

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

关于java - Struts2 文件上传 - 未调用execute(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60235328/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com