在选择文件之前禁用 freemarker/spring 表单上的提交按钮
在用户选择文件之前如何禁用提交按钮?
我的页面上有一个表单:
<table>
<form method="post" enctype="multipart/form-data" id="messageupload">
<@spring.bind "messageUploadCommand.*"/>
<tr>
<td><@spring.formInput 'messageUploadCommand.multipartFile' '' 'file' /></td>
<td><button type="submit" id="searchButton">Upload</button></td>
<td><@spring.formSingleSelect
'messageUploadCommand.messageFormat',
messageFormats, '' />
<@spring.showErrors '<br>', 'error' /> </td>
</tr>
</form>
</table>
如果用户在选择文件之前提交表单,我会得到
freemarker.template.TemplateException: Error executing macro: formSingleSelect required parameter: options is not specified.
at freemarker.core.Macro$Context.sanityCheck(Macro.java:211)
at freemarker.core.Macro$Context.runMacro(Macro.java:169)
at freemarker.core.Environment.visit(Environment.java:603)
at freemarker.core.UnifiedCall.accept(UnifiedCall.java:106)
at freemarker.core.Environment.visit(Environment.java:210)
at freemarker.core.MixedContent.accept(MixedContent.java:92)
at freemarker.core.Environment.visit(Environment.java:210)
at freemarker.core.Environment.process(Environment.java:190)
at freemarker.template.Template.process(Template.java:237)
at ...
How do I disable the submit button until the user has chosen a file?
I have a form on my page:
<table>
<form method="post" enctype="multipart/form-data" id="messageupload">
<@spring.bind "messageUploadCommand.*"/>
<tr>
<td><@spring.formInput 'messageUploadCommand.multipartFile' '' 'file' /></td>
<td><button type="submit" id="searchButton">Upload</button></td>
<td><@spring.formSingleSelect
'messageUploadCommand.messageFormat',
messageFormats, '' />
<@spring.showErrors '<br>', 'error' /> </td>
</tr>
</form>
</table>
If the user submits the form before choosing a file I get
freemarker.template.TemplateException: Error executing macro: formSingleSelect required parameter: options is not specified.
at freemarker.core.Macro$Context.sanityCheck(Macro.java:211)
at freemarker.core.Macro$Context.runMacro(Macro.java:169)
at freemarker.core.Environment.visit(Environment.java:603)
at freemarker.core.UnifiedCall.accept(UnifiedCall.java:106)
at freemarker.core.Environment.visit(Environment.java:210)
at freemarker.core.MixedContent.accept(MixedContent.java:92)
at freemarker.core.Environment.visit(Environment.java:210)
at freemarker.core.Environment.process(Environment.java:190)
at freemarker.template.Template.process(Template.java:237)
at ...
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
我就是这样做的:
我通过 Freemarker 变量添加了文件选择器 onchange 脚本,并默认禁用该按钮。 onchange 脚本测试值的长度(即文件名)是否为零。
This is how I did it:
I added the file-chooser onchange script via a Freemarker variable, and disabled the button by default. The onchange script tests for the length of the value, i.e. the filename, being zero.