Проблема для меня довольно проста.После нажатия на метку привязки я выполняю javascript, используя a4j:jsFunction
, и действие этой функции должно передавать XML-файл с сервера.Проблема в том, что поток, отправленный в ответе richfaces, не дает диалоговое окно saveAs, а вместо этого отображает XML в браузере.Прочитав много статей, я понял, что ответ Ajax не может дать диалог SaveAs.
Фрагмент xhtml:
<h:form>
<a4j:jsFunction name="updateCart" reRender="idFavouritePanel">
<a4j:actionparam name="jsonObject" assignTo="#{archiveOrderBean.jsonObject}"/>
</a4j:jsFunction>
<a4j:jsFunction name="download" reRender="partTableId" action="#{archiveOrderBean.loadSelectedOrder}">
<a4j:actionparam name="strId" assignTo="#{archiveOrderBean.strId}" />
</a4j:jsFunction>
</h:form>
и набор ответов от bean-компонента.
response.setContentType("application/xml");
response.setContentLength(byteArr.length);
response.addHeader("Content-Disposition", "attachment; filename=" + attr.getUrl());
// writer.write(byteArr.toString());
// writer.flush();
response.getOutputStream().write(byteArr);
response.getOutputStream().flush();
// post(trueStr,encPath,encUrl,trueStr,response);
FacesContext.getCurrentInstance().responseComplete();
любая помощь в этом отношении будет очень полезна.