0
我需要通過點擊模態窗口上的Ajax按鈕來執行文件上傳。我遇到問題,因爲文件已上傳,但上傳過程未完成,並且無法使用fileName更新表單。有一個AjaxIndicator在文件上傳後無法隱藏。模式窗口以Panel的形式實現。這裏是代碼:Wicket:在模態窗口中使用AJAX上傳文件
uploadFile=new IndicatingAjaxButton("uploadFile"){
private static final long serialVersionUID = 1L;
@Override
protected void onSubmit(AjaxRequestTarget target, Form<?> form)
{
uploadFile.getAjaxIndicatorMarkupId();
FileUpload fileUpload =
((FileUploadFieldPanel)uploadPanel).getUploadField().getFileUpload();
if (fileUpload != null)
{
String fileName = fileUpload.getClientFileName();
String path = uploadpath + relativeuploadpath;
File newFile = new File(path, fileName);
checkFileExists(newFile);
try {
newFile.createNewFile();
fileUpload.writeTo(newFile);
}
catch (IOException e) {
e.printStackTrace();
}
titleField.setModelObject(fileName);
target.addComponent(titleField);
}
};
uploadFile.setOutputMarkupId(true);
form.add(uploadFile);
問題是:我如何更新窗體上的titleField與fileName?在這種情況下,「target.addComponent(titleField);」不起作用。
我傾向於依靠Form的onSubmit()來處理表單數據(例如保存到數據庫),並且只使用AjaxButton的onSubmit()方法進行ajax操作(例如選擇隱藏哪些組件等)。無論如何,我認爲titleField仍然在頁面上?你沒有把它與形式或任何東西一起隱藏? – jbrookover 2011-05-24 19:19:25