| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Java EE (J2EE) и Spring > Передача информации на клиента в виде файла |
| Автор: Nesmishlenish 24.9.2007, 18:04 |
| Здравствуйте, нарисовалась проблемка одна: Имею переменную типа StringBuffer с некоторой информацией, мне нужно передать ее клиенту в виде файла *.vcf, Как это можно сделать? |
| Автор: 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 |
Мда... Ну хорошо что разрешилось |