我正在尝试使用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
。检查可以解决问题,但表单将使用空数据而不是用户输入的内容重新填充。