Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java EE (J2EE) и Spring > Передача информации на клиента в виде файла


Автор: Nesmishlenish 24.9.2007, 18:04
 Здравствуйте, нарисовалась проблемка одна: Имею переменную типа StringBuffer с некоторой информацией, мне нужно передать ее клиенту в виде файла *.vcf, Как это можно сделать? smile 
    
  

Автор: Nesmishlenish 24.9.2007, 18:30
StringBuffer sb = itvc.generateVCard(getTransferObject());
    
    FacesContext faces = FacesContext.getCurrentInstance();
    HttpServletResponse response = (HttpServletResponse) faces
        .getExternalContext().getResponse();
    response.setContentType( "application/plain" );
    response.setHeader("Content-Disposition","inline; filename=print.vcf");
    try {
        ServletOutputStream out = response.getOutputStream();
        out.print(sb.toString());
    } catch (IOException e) {
        e.printStackTrace();
    }
    faces.responseComplete();
Пытался сделать так, но не получаеться - выдает текст на странице(

Автор: Maksym 24.9.2007, 20:15
Nesmishlenish
А если content type поставить application/octet-stream?

Автор: Nesmishlenish 25.9.2007, 08:51
Maksym, все равно не работает

Автор: Maksym 25.9.2007, 11:53
Nesmishlenish
Единственная версия, которая приходит в голову: поскольку ты работаешь через jsf -- он перезатирает content type и ставит там снова html. Проверь в клиенте заголовок респонса (например, с помощью FireBug) -- какой  content type в результате приходит в браузер? Попробовал в обычном сервлете -- и для application/plain и для application/octet-stream все браузеры предлагают сохранить файл.
Прикрепляю работающий пример.

Автор: Nesmishlenish 28.9.2007, 09:29
 Спасибо за пример, он действительно у меня работает) Но в моем приложении все по преднему. Я проверил заголовок, туда приходит все как положено) но все равно не работает)

Автор: Nesmishlenish 28.9.2007, 10:17
 Тут ребята выдвинули идею одну: JSF постит, а сервлет гетит, но так как я совсем не знаком со спецификой работы с doPost и doGet то для меня это пустые слова. Мот подскажите чего?

Автор: Nesmishlenish 3.10.2007, 14:50
Все, проблема решилась) Я использовал аяксовую кнопочку на форме) замена ее на обыкновенный <h:commandButton/> дало свои результаты. Я честно говоря не понимаю почему. Результат был получен эксперементальным путем.

Автор: Maksym 3.10.2007, 15:21
Цитата(Nesmishlenish @  3.10.2007,  14:50 Найти цитируемый пост)
Я использовал аяксовую кнопочку на форме) 

Мда...

Ну хорошо что разрешилось  smile   Заходи, если что  smile 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)