Background
----------

Write an XML document to a browser's response stream and cause the browser to display a "Save As" dialog.

Problem
-------

Consider the following `download()` method:

```
  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();

```

In Firefox, the XML content is displayed in the browser window. In IE 7, the XML content is not displayed -- you have to view the document source. Neither situation is the desired result.

The web page uses the following code for the button:

```
    <a4j:commandButton action="#{domainContent.download}" value="Create Domain" reRender="error" />

```

The XML that is generated *does not* start with `<?xml version="1.0"?>`, rather the XML content resembles:

```
<schema xmlns="http://www.jaspersoft.com/2007/SL/XMLSchema" version="1.0">
  <items>
    <item description="EDT Class Code" descriptionId="" label="EDT Class Code" labelId="" resourceId="as_pay_payrolldeduction.edtclass"/>
  </items>
  <resources>
    <jdbcTable datasourceId="JNDI" id="as_pay_payrolldeduction" tableName="as_pay.payrolldeduction">
      <fieldList>
        <field id="payamount" type="java.math.BigDecimal"/>
      </fieldList>
    </jdbcTable>
  </resources>
</schema>

```

Update #1
---------

Note the following line of code:

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

```

Update #2
---------

Using `<a4j:commandButton ... />` is the problem; a regular `<h:commandButton .../>` performs as expected. Using the `<h:commandBUtton .../>` prevents the `<a4j:outputPanel .../>` from refreshing any error messages.

Related [Seam Message](http://seamframework.org/135584.lace).

Mime Type
---------

The following mime types do not trigger the "Save As" dialog:

* `"application/octet-stream"`
* `"text/xml"`
* `"text/plain"`

Question
--------

What changes will cause the `a4j:commandButton` to trigger a "Save As" dialog box so that the user is prompted to save the XML file (as `domain.xml`)?

Thank you.