【发布时间】:2010-11-16 16:23:42
【问题描述】:
我想在 Wicket 中使用 AJAX 上传文件。在我看来,Wicket 不支持此功能。有可能吗?
【问题讨论】:
标签: java ajax file-upload wicket
我想在 Wicket 中使用 AJAX 上传文件。在我看来,Wicket 不支持此功能。有可能吗?
【问题讨论】:
标签: java ajax file-upload wicket
查看 Wicket 示例中的源代码以进行上传:http://www.wicketstuff.org/wicket13/upload/single。它有标准版本和 ajax 版本的示例。
【讨论】:
作为一个老问题的更新,现在看来是可能的:
【讨论】:
这种方法对我来说适用于完整的 Ajax wicket 应用程序。 抱歉,这是 Scala 语法,但应该可以轻松转换回 Java 语法:
import java.io.File
import org.apache.wicket.markup.html.form.upload.FileUploadField
import org.apache.wicket.markup.html.form.Form
import org.apache.wicket.markup.html.WebPage
import org.apache.wicket.ajax.markup.html.form.AjaxSubmitLink
import org.apache.wicket.ajax.AjaxRequestTarget
class TestPage extends WebPage {
val uploadForm = new Form("form")
val fileField = new FileUploadField("file")
uploadForm.add(fileField)
add(form)
add(new AjaxSubmitLink("submit", uploadForm) {
def onSubmit(target: AjaxRequestTarget, form: Form[_]) {
val upload = fileField.getFileUpload
if (upload != null) {
val file: File = upload.writeToTempFile
}
}
})
}
HTML:
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:wicket="http://wicket.apache.org/dtds.data/wicket-xhtml1.4-strict.dtd">
<body>
<form wicket:id="form">
<input wicket:id="file" type="file"/>
</form>
<button wicket:id="submit">Upload</button>
</body>
</html>
【讨论】: