掲示板
download di un file da portlet - Cannot obtain Writer
9年前 に angelo scafuro によって更新されました。
download di un file da portlet - Cannot obtain Writer
New Member 投稿: 3 参加年月日: 15/02/27 最新の投稿
Salve, il mio problema è il seguente.
Uso Liferay, integrato con Primefaces e Spring Mvc. Da una pagina xhtml richiamo un metodo che. tramite JAXB, mi genera del codice XML.
Ora se questo codice generato lo stampo a video o creo un file, va tutto a buon fine e vedo correttamente il codice generato
Il mio problema è questo. Vorrei che dopo la creazione del codice XML, questo venisse inserito in un file e partisse il download automatico. Navigando su vari forum ho trovato soluzioni sempre diverse, che però non funzionavano. Vi posto una delle soluzioni che ho testato, la quale mi restituisce la seguente eccezione:
Cosa c'è di sbagliato? Qualcuno di voi ha mai fatto una cosa simile alla mia e può postarmi del codice funzionante?
Grazie mille a chi mi dedicherà del tempo.
Uso Liferay, integrato con Primefaces e Spring Mvc. Da una pagina xhtml richiamo un metodo che. tramite JAXB, mi genera del codice XML.
Ora se questo codice generato lo stampo a video o creo un file, va tutto a buon fine e vedo correttamente il codice generato
(m.marshal( oggetto, System.out);
Il mio problema è questo. Vorrei che dopo la creazione del codice XML, questo venisse inserito in un file e partisse il download automatico. Navigando su vari forum ho trovato soluzioni sempre diverse, che però non funzionavano. Vi posto una delle soluzioni che ho testato, la quale mi restituisce la seguente eccezione:
Cannot obtain Writer because OutputStream is already in use
try {
JAXBContext context context = JAXBContext.newInstance(this.getClass());
Marshaller m = context.createMarshaller();
m.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE);
OutputStream oss = null;
FacesContext context2 = FacesContext.getCurrentInstance();
ExternalContext externalContext = context2.getExternalContext();
externalContext.setResponseContentType("text/xml");
externalContext.setResponseHeader("Expires", "0");
externalContext.setResponseHeader("Cache-Control","must-revalidate, post-check=0, pre-check=0");
externalContext.setResponseHeader("Pragma", "public");
externalContext.setResponseHeader("Content-disposition", "attachment;filename="+ "file1" + ".xml");
externalContext.addResponseCookie(Constants.DOWNLOAD_COOKIE, "true", Collections.<string, object>emptyMap());
try {
oss = externalContext.getResponseOutputStream();
m.marshal( oggetto, oss );
OutputStreamWriter osw = new OutputStreamWriter(oss, "UTF-8");
osw.flush();
externalContext.responseFlushBuffer();
} catch (....
...
</string,>
Cosa c'è di sbagliato? Qualcuno di voi ha mai fatto una cosa simile alla mia e può postarmi del codice funzionante?
Grazie mille a chi mi dedicherà del tempo.
9年前 に Marco Rosetti によって更新されました。
RE: download di un file da portlet - Cannot obtain Writer
Junior Member 投稿: 68 参加年月日: 13/03/06 最新の投稿
Ciao,
hai provato a guardare la classe ServletResponseUtil, in particolare il metodo statico sendFile?
hai provato a guardare la classe ServletResponseUtil, in particolare il metodo statico sendFile?