2011-05-22 41 views
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);」不起作用。

+0

我傾向於依靠Form的onSubmit()來處理表單數據(例如保存到數據庫),並且只使用AjaxButton的onSubmit()方法進行ajax操作(例如選擇隱藏哪些組件等)。無論如何,我認爲titleField仍然在頁面上?你沒有把它與形式或任何東西一起隱藏? – jbrookover 2011-05-24 19:19:25

回答