2011-05-22 119 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

回答

相关问题