掲示板

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
(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.
thumbnail
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?