我正在为基于 struts 1.1 构建的应用程序进行增强我需要有一个我使用的文件上传字段,
<html:file size="40" property="strUploadNoFile" />
然后我将属性添加到使用 DynaValidatorForm 的 struts 配置文件表单 bean,如下所示,
<form-property name="strUploadNoFile" type="org.apache.struts.upload.FormFile"/>
此外,我也在 jsp 中将表单加密类型添加为 multipart/form-data。
该代码工作正常,我可以成功读取上传文件的内容。
但是这里的应用程序设计是一对动作映射到同一个表单bean。因此,当我来自不存在文件上传字段的请求路径时,我得到了异常,
无法将“java.lang.String”类型的值分配给“org.apache.struts.upload.FormFile”类型的属性“strUploadNoFile”
原因是因为我有条件地将密码切换为默认应用程序/x-www-form-urlencoded 或 multipart/form-data。因此,当我来自不存在文件上传的路径时,我的加密类型将是 application/x-www-form-urlencoded。但是正如我上面提到的,应用程序结构使用通用表单 bean 来执行不同的操作,但作为 FormFile 的 bean 属性 strUploadNoFile 仍保留在表单属性中,但 jsp 中的加密类型是 multipart/form-data。我认为这是异常的原因。
我只需要知道我是否可以从该 xml 文件中硬编码的属性中动态添加?所以我只能从具有文件上传字段的请求路径中添加 FileForm 属性。在这种情况下,为每个请求重新设计具有单独表单 bean 的应用程序架构是一项艰巨的工作。