在游戏框架中,是否可以拒绝一个字段
filledForm.reject("myField", "You are missing files");
return badRequest(myform.render(filledForm));
无需重新加载页面?
我有一个文件输入字段,可以让用户选择文件。在拒绝和重新加载时,文件被清除并显示错误。我希望他们选择的文件在那里
当前行为: 提交表单前:
提交后(错误:文件不见了)
最佳答案
文件选择输入字段(即 <input type="file" ... />
)与其他输入字段不同——您无法从服务器端预填充值。如果可以的话,这将是一个巨大的安全漏洞(想想 <input type="file" value="/etc/passwd" .. />
)。在服务器上,当您获得提交的表单时,您无法获得已上传文件的完整路径,只能获得文件名和内容。
如果您真的需要保留文件输入字段的值,则需要采用不同的途径:通过 Ajax 提交表单(谷歌搜索“ajax 文件上传”,了解一些技术和库来帮助解决此问题),并使用 Ajax 响应来指示文件是否有效。
进一步说明:使用正常的 HTML/HTTP post 方法(Play 表单助手使用的方法),原始页面消失了,服务器响应是一个新页面,与前一个页面没有任何联系。 Play 表单助手将使用之前的值预填充此页面上的输入字段,但如上所述,这对于文件输入字段是不可能的。
这就是为什么有专门用于上传文件的 Javascript 库。如果您的表单主要与文件上传有关,您应该查看这些。 (例如 http://fineuploader.com )。在服务器端,Ajax 查询的目标将是一个新的 Action,它只处理上传的文件并返回成功/失败消息,然后您将向用户显示该消息。
关于java - 在 play 2.0.3 中拒绝表单而不重新加载页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12658553/