0

我已经使用 Struts2 实现了一个上传实用程序。我已经通过在我的操作类中以编程方式检查我的 setFileContentType() 方法来限制上传特定文件类型。

剩下的一个问题是在上传的文件超过最大文件大小设置的情况下向用户显示自定义错误页面。

我对此进行了研究,并看到了验证拦截器应如何与返回的“输入”结果一起使用。但是,我仍然无法将所有部分放在一起。

我的最终目标如下:如果用户尝试上传一个大文件,我想显示一个带有我自己的错误消息的新页面。

任何提示/建议?

更新 我的 struts.xml 中有以下配置:

<action name="FileUpload" class="common.FileUpload">
<interceptor-ref name="fileUpload"/>
  <result name="success">common/FileUpload/FileUpload.jsp</result>
  <result name="UploadResult">common/FileUpload/FileUploadResult.jsp</result>
</action>

我知道上面的配置缺少验证拦截器,以防我想检测文件大小错误。问题是我不确定此时它是如何发挥作用的。

谢谢

4

1 回答 1

1

FileUpload 有一个文件大小参数,你可以在你的配置中使用它

    <interceptor-ref name="fileUpload">
        <param name="maximumSize">50</param>
    </interceptor-ref> 

如果您想提供自定义消息,您可以在此处设置

struts.messages.error.file.too.large

当上传的文件过大时发生,由 maximumSize 指定。

执行您的操作ValidationAware,如果 Struts2 遇到此错误,您将收到通知,您addFieldError将被调用以通知您在属性文件中定义的错误keystruts.messages.error.file.too.large消息,一旦您addFieldError被调用,您可以采取必要的操作。

上传文件时 FileUploadInterceptor 也会对文件或文件类型、大小进行验证,如果操作实现了 ValidationAware,那么它将通过调用 addFieldError 回调方法在该操作中设置验证消息

于 2012-05-23T09:24:36.040 回答