2015-04-02 4 views
0

Я стараюсь изо всех сил описать свою ситуацию. Мой сайт калитки содержит список компонентов калитки, где каждый элемент списка имеет другой список. Каждый элемент в списке нижнего уровня имеет ссылку ajax wicket для загрузки некоторого файла. Все это прекрасно работает. Я привык к этому AjaxBehaviour. Метод startDownload этого поведения вызывается в методе link onClick.Запрос триггера калитки по другому запросу

public void startDownload(AjaxRequestTarget target) { 
    target.appendJavaScript("window.location.href='" + getCallbackUrl() +"'"); 
    } 

Метод onRequest такого поведения является:

@Override 
    public void onRequest() { 
    IRequestHandler fileTarget = new IRequestHandler() { 

     @Override 
     public void respond(IRequestCycle requestCycle) { 
     if (null != file) { 
      try { 
      FileInputStream inputStream = new FileInputStream(file); 
      WebResponse resp = (WebResponse) requestCycle.getResponse(); 
      resp.setAttachmentHeader(fileName); 
      String contentType = FileUtils.getFileType(fileName); 
      if (contentType != null) { 
       resp.setContentType(contentType); 
      } 
      resp.setHeader("Pragma", "anytextexeptno-cache"); 
      resp.setHeader("Cache-Control", "max-age=0"); 

      Streams.copy(inputStream, requestCycle.getResponse().getOutputStream()); 
      } catch (Exception e) { 
      logger.error(e.getMessage(), e); 
      } 
     } 
     } 

Теперь мне нужно перезагрузить модель и обновить некоторые компоненты на странице после загрузки файла действий. Я попытался добавить целую страницу в AjaxRequestTarget в методе onclick, после того как код вызвал метод startDownload. Перезагрузка страницы отлично работает, но окно с файлом для загрузки не показывает.

Я думаю, что мне нужно перезагрузить страницу в другом, отдельном запросе (может быть, я ошибаюсь?), Потому что в этом запросе я вызываю «window.location.href = ....», но я надеваю ` я знаю, как я могу обеспечить второй запрос для перезагрузки страницы.

Есть ли у кого-то идеи, что я делаю неправильно? И как я могу решить свою проблему?

+0

Там нет смысла в первой выполняя запрос Ajax, а затем перезагружая полную страницу. –

ответ

0

Это кажется, что моя реализация simmilar на это с cwiki.apache.org сайта. В методе onRequest я использовал getComponent(). GetRequestCycle(). ScheduleRequestHandlerAfterCurrent (обработчик) и, несмотря на это, не работает.

Возможно, что причиной этого является компонентом, который запрос причиной добавляется к цели (потому что я добавить целевой всю страницу и компонент - ajaxLink в этом примере, является потомком этой страницы)

Смежные вопросы