Расположение содержимого заголовка HTTP-ответа для вложений

Предпосылки

Запишите XML-документ в поток ответов браузера и заставьте браузер отображать диалоговое окно «Сохранить как».

Проблема

Рассмотреть следующий метод download () :

  HttpServletResponse response = getResponse();

  BufferedWriter bw = new BufferedWriter( new OutputStreamWriter(
      response.getOutputStream() ) );

  String filename = "domain.xml";
  String mimeType = new MimetypesFileTypeMap().getContentType( filename );

  // Prints "application/octet-stream"
  System.out.println( "mimeType: " + mimeType );

  // response.setContentType( "text/xml;charset=UTF-8" );
  response.setContentType( mimeType );
  response.setHeader( "Content-Disposition", "attachment;filename="
      + filename );

  bw.write( getDomainDocument() );
  bw.flush();
  bw.close();

В Firefox содержимое XML отображается в окне браузера. В IE 7 содержимое XML не отображается - необходимо просмотреть источник документа. Ни одна из ситуаций не является желаемым результатом.

Веб-страница использует следующий код для кнопки:

    

Генерируемый XML не начинается с Xml version = "1.0"?> , а его XML-содержимое выглядит примерно так:


  
    
  
  
    
      
        
      
    
  

Обновление № 1

Обратите внимание на следующую строку кода:

response.setHeader( "Content-Disposition", "attachment;filename=" + filename );

Обновление # 2

Использование является проблемой; обычный работает должным образом. Использование не позволяет обновлять сообщения об ошибках.

Связанное Сообщение о шве .

Тип Mime

Следующие типы MIME не запускают диалоговое окно «Сохранить как»:

  • «application / octet-stream»
  • «text / xml»
  • «text / plain "

Вопрос

Какие изменения вызовут a4j: commandButton , чтобы вызвать диалоговое окно «Сохранить как», чтобы пользователю было предложено сохранить файл XML (как domain.xml )?

Спасибо.

21
задан Dave Jarvis 14 March 2011 в 17:35
поделиться