2016-06-03 1 views
0

У меня есть FileUploadField в форме. Этот компонент добавляет в HTML-код следующий элемент:Калитка: доступ к файлу FileUploadFile

<input id="upload" type="file" name="fileUpload"> 

При щелчке пользователь должен выбрать файл. Я хочу знать, что имя этого файла, сразу после выбора, поэтому я могу установить значения других компонентов в форме.

Я попробовал установить «onChange» AjaxEvenBehaviour на FileUploadField, но не могу увидеть имя файла в параметрах запроса.

FileUploadField fileUpload = new FileUploadField("fileUpload"); 

    form.add(fileUpload); 

    fileUpload.add(new AjaxEventBehavior("onChange") { 

     @Override 
     protected void onEvent(AjaxRequestTarget target) { 
      Request request = RequestCycle.get().getRequest(); 
      request.getRequestParameters(); 

     } 

    }); 

Кто-нибудь успешно это сделал и как вы это сделали?

ответ

1

Вы должны проинструктировать поведение отправить по значению ввода:

fileUpload.add(new AjaxEventBehavior("onChange") { 

    @Override 
    protected void updateAjaxAttributes(AjaxRequestAttributes attributes) 
    { 
     super.updateAjaxAttributes(attributes); 

     String value = "return {'value': Wicket.$(attrs.c).value}"; 
     attributes.getDynamicExtraParameters().add(value); 
    } 

    @Override 
    protected void onEvent(AjaxRequestTarget target) { 
     Request request = RequestCycle.get().getRequest(); 

     request.getRequestParameters().getParameterValue("value"); 

    } 

});