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