Struts2 fileUpload和验证拦截器

时间:2013-08-09 17:36:46

标签: java file-upload struts2 nullpointerexception interceptor

我正在尝试使用fileUpload拦截器将上传文件的约束条件放到我的网站上。验证失败后,我会在validate()方法中收到空指针异常。我目前在我的struts.xml中有我的拦截器:

<interceptor-ref name="basicStack"/>
<interceptor-ref name="fileUpload">
    <param name="maximumSize">1048576</param>
</interceptor-ref> 
<interceptor-ref name="validation"/>
<interceptor-ref name="workflow"/>

我已经发现原因可能与验证前fileUpload有关。我知道它需要按此顺序发生,但如果fileUpload失败,那么我没有从我的表单中获取其他输入的数据;这些字段都是空的。

我试图在验证失败后,将用户带回表单,其余的输入数据在验证失败后已填充回表单。如果请求继续上传,我将如何继续而不是停止上传?

例外:

Struts Problem Report

Struts has detected an unhandled exception:

Messages:   
File:   profiles/actions/UpdateProfileAction.java
Line number:    183
Stacktraces

java.lang.NullPointerException
profiles.actions.UpdateProfileAction.validate(UpdateProfileAction.java:183)
   com.opensymphony.xwork2.validator.ValidationInterceptor.doBeforeInvocation(ValidationInterceptor.java:251)
com.opensymphony.xwork2.validator.ValidationInterceptor.doIntercept(ValidationInterceptor.java:263)
org.apache.struts2.interceptor.validation.AnnotationValidationInterceptor.doIntercept(AnnotationValidationInterceptor.java:68)
com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
com.opensymphony.xwork2.interceptor.ConversionErrorInterceptor.intercept(ConversionErrorInterceptor.java:138)
etc.

指出了行动验证方法:

profile.setAvailabilityLength(Jsoup.clean(availabilityLength.trim(), Whitelist.basic()));

我们没有检查是否availabilityLength == null。检查可以解决问题,但表单将使用空数据而不是用户输入的内容重新填充。

0 个答案:

没有答案