Retornar erro do Jasper para o Flex

Estou fazendo uma requisição para um Servlet passando alguns parâmetros para exibir um relatório. Caso o usuário entre com um valor errado para o parâmetro (letra ao invés de número, por exemplo) o Jasper lança uma exception mas não exibe nenhuma mensagem para o usuário, apenas aparece o erro no Console. Como faço para enviar uma mensagem do Servlet para o Flex quando ele entra no bloco Catch ?

É só assinar o teu método com throws Exception (ou a exception correspondente) e se for necessário usar a instrução throw para lançar a exceção
Qq exceção irá chegar no Flex como fault.
E no flex vc pode fazer algo como:

public function faultHandler(event:FaultEvent):void {
      var errorMessage:ErrorMessage = event.message as ErrorMessage;
      Alert.show(errorMessage.rootCause.message);
}

[]s

Olá Fabio.
Não funcionou. Ocorreu uma exceção do Jasper mas no Flex não dispara o evento FaultEvent.
Fiz uma classe no Flex e no construtor eu passo uma referência de um objeto URLRequest e adiciono o listener FaultEvent.

Essa é a exceção: net.sf.jasperreports.engine.JRException: Error executing SQL statement for :

classe flex:

[code] public function URLRequestMensagem(urlrequest:URLRequest) {
var loader:URLLoader=new URLLoader();
configureListeners(loader);
try {
loader.load(urlrequest);
} catch (error:Error) {
Alerta.show("Erro URLRequestMensagem ", error.message);
}
}

private function configureListeners(dispatcher:IEventDispatcher):void {
dispatcher.addEventListener(FaultEvent.FAULT, failRequest);
}

private function failRequest(event:FaultEvent):void {
Alerta.show("falha do request : " + event);
}

}
[/code]

Esse é o servlet:

protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
.
.
.
parametros.put("SUBREPORT_DIR", sc.getRealPath("WEB-INF/relatorios/")+"/");		    
			reportFile = new File(sc.getRealPath(caminhoArquivo));			
			bytes = JasperRunManager.runReportToPdf(reportFile.getPath(), parametros, con);
			
			if (bytes != null && bytes.length > 0) {
				response.setContentType("application/pdf");
				response.setContentLength(bytes.length);
				ServletOutputStream ouputStream = response.getOutputStream();
				ouputStream.write(bytes, 0, bytes.length);
				ouputStream.flush();
				ouputStream.close();
			}			
		} catch (Exception e) {
			e.printStackTrace();			
		}
}

Como comentei antes vc não está deixando subir a exceção, vc a está “segurando” no catch ou remova seu try catch do java deixando subir qq exceção ou a trate como está fazendo e deixe-a subir tb :

[code]
} catch (Exception e) {
e.printStackTrace();
throw e; // deixa subir a exceção.
}
[url]

[]s

Acho que o problema não é no Servlet.
Eu fiz:


public byte[] executaReportToPdfFile(String sourceFileName, HashMap parameters,
			Connection conn
			) throws JRException {			
			return JasperRunManager.runReportToPdf(sourceFileName, parameters,	conn);
}

try {
    			bytes = executaReportToPdfFile(reportFile.getPath(), parametros, con);
		    } catch (JRException jre) {
			   throw jre;
		    }

Não adiantou. Ele não deixa colocar “throw jre” dentro do bloco catch.
Quando uso um RemoteObject qualquer exceção, mesmo não subindo, dispara um FaultEvent no flex . . .