我使用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>
我知道如果我想检测文件大小错误,上面的配置缺少验证拦截器。问题是,我不确定这一点是如何发挥作用的。
由于
答案 0 :(得分:1)
FileUpload有一个filesize参数,您可以在配置中使用它
<interceptor-ref name="fileUpload">
<param name="maximumSize">50</param>
</interceptor-ref>
如果您想提供自定义消息,可以在此处设置
struts.messages.error.file.too.large
当上传的文件太大而无法指定时发生 MAXIMUMSIZE。
启动您的操作ValidationAware
,如果Struts2遇到此错误,您会收到通知,系统会调用您的addFieldError
通知您key
将struts.messages.error.file.too.large
{}}的错误您在属性文件中定义的消息,一旦调用了addFieldError
,您就可以采取必要的措施。
上传文件时FileUploadInterceptor也会对文件或文件类型,大小进行验证,如果action实现了ValidationAware,那么它将通过调用addFieldError回调方法在该操作中设置验证消息