【发布时间】:2011-07-27 11:40:11
【问题描述】:
是否有适用于 Spring 3 和 JSP 的小型框架,允许对包含普通字段和文件上传的表单进行服务器端表单验证,从而能够“拒绝”请求而不会丢失上传的文件?
更详细: 我有一个包含普通输入字段和文件上传字段的 HTML 表单。此表单的验证在服务器端完成(在客户端进行验证很复杂)。如果表单数据正确,则没有问题。 但是用户发送了一个无效的表单然后我需要再次显示表单,用户更正输入并再次发送表单。这很好除了用户需要再次输入(并上传)文件这一事实。 -- 一般的解决方案很简单:我需要将文件存储在服务器端,如果用户再次发送更正的数据,我需要使用这个已经上传的文件。 -- 但即使不是那么复杂,它也是很多工作,我不想重新发明轮子。
所以我的问题是,是否有任何小框架可以实现此功能,我可以将其添加到我的应用程序中?
(目前我使用的是:Spring 3.0、JSP、Dojo)
【问题讨论】:
-
为什么不在 2 个不同的 ajax 调用中分离文件上传和表单验证?因此文件上传字段将在用户选择文件作为 ajax 调用后直接上传文件,而“提交”按钮将提交其他表单字段进行验证。
-
此外,dojo 有 dojo.io.iframe 用于通过 ajax 上传文件,看起来实验性 dojox 包有一个 dojox.form.FileUploader 类也可能有所帮助。
-
@Dzhu ajax 不是真正的选择,因为应用程序应该在没有的情况下工作,所以 JavaScript 和 Ajax 只允许用于额外的可用性功能,但核心必须在没有的情况下工作。 -- 所以有人可以说这个上传的东西是一个附加功能,但事实并非如此。 -- 无论如何谢谢你的想法
-
好吧,我不知道有任何现有的库可以处理这种情况。但它很容易实现:在提交表单(上传文件)后将文件保存到 tmp 目录,给它一个唯一的名称,例如使用java.util.UUID,将路径保存在Session或spring Model对象中,让jsp知道文件的UUID,当表单更新重发时,可以使用UUID文件名查找文件。跨度>
-
@Dzhu:如果用户从不提交表单或关闭会话,不要忘记删除文件,在表单中显示上传的文件等等......我告诉它不难, 但工作量很大
标签: java javascript spring jsp