您的问题是您为操作定义了错误的拦截器堆栈。
默认的是
defaultStack,而
FileUpload拦截器之后使用的是
basicStack。
正如您在官方文档中看到的,
basicStack它不
ModelDriven支持。从更改操作配置:
<interceptor-ref name="fileUpload"> <param name="allowedTypes">image/jpeg,image/png,image/gif</param> <param name="maximumSize">4194304</param></interceptor-ref><interceptor-ref name="basicStack"></interceptor-ref>
至 :
<interceptor-ref name="fileUpload"> <param name="allowedTypes">image/jpeg,image/png,image/gif</param> <param name="maximumSize">4194304</param></interceptor-ref><interceptor-ref name="defaultStack"></interceptor-ref>
甚至更好(避免
FileUpload两次使用Interceptor):
<interceptor-ref name="defaultStack"> <param name="fileUpload.allowedTypes">image/jpeg,image/png,image/gif</param> <param name="fileUpload.maximumSize">4194304</param></interceptor-ref>
还可以考虑使用Struts2标记生成HTML(使用
simple主题最大程度地控制生成的HTML,或者
XHTML使用默认主题,以获得最大的HTML生成帮助)。
在许多标签(与那些 动态属性允许:真正
的文档中),如
<s:textfield/>,
<s:textarea/>,
<s:file/>等等,你可以定义自己的属性,如HTML5
pattern,例如。
HTML将更干净,您可以更快地编写代码。



