Tenho uma página que envia um e-mail, porém fiz um teste onde o servidor smtp está com valores que não existe e consequentemente isso vai gerar uma exceção.
Criei já na ApplicationManager um filtro Global (ExceptionFilter) conforme ilustrado em vários exemplos aqui no fórum.
Porém ao lançar uma exceção não consigo recuperar em uma página personalizada os erros gerados pela exceção. Já olhei no debug da página e não possui nada no Output.
Code:
//AplicationManager
public void loadActions() {
setDebugMode(true, true);
// Filtros Globais
addGlobalFilter(new ExceptionFilter());
addGlobalFilter(new FileUploadFilter());
addGlobalFilter(new ValidatorFilter());
addGlobalFilter(new ConnectionFilter(connHandler));
addGlobalFilter(new AuthenticationFilter());
addGlobalConsequence(AuthenticationFilter.LOGIN, new redirect(PATH_SYSTEM + "index.jsp"));
addGlobalConsequence(AuthorizationFilter.ACCESSDENIED, new Redirect(PATH_ERROR + "denied.jsp"));
addGlobalConsequence(ExceptionFilter.EXCEPTION, new Forward(PATH_ERROR + "exception.jsp"));
Code:
//Action
public String enviar() {
try {
//Configurando os parâmetros do e-mail
Properties params = new Properties();
params.load(ApplicationManager.getInstance().getClass().getResourceAsStream("email.properties"));
String smtpServer = params.getProperty("smtp_server");
String email = params.getProperty("email");
int port = Integer.parseInt(params.getProperty("port"));
String senha = params.getProperty("senha");
Boolean sslConnection = Boolean.parseBoolean(params.getProperty("ssl_connection"));
//-----------------------------------------------
//Configurando o e-mail
Email.setSSLConnection(sslConnection);
Email.setDefaultPort(port);
Email.setDefaultHostName(smtpServer);
Email.setDefaultAuthentication(email, senha);
Email.setDefaultFrom(email, "Site Coopema");
//Enviando o e-mail
SimpleEmail simpleEmail = new SimpleEmail();
simpleEmail.addTo(input.getStringValue("emailSetor"));
simpleEmail.setSubject("E-mail enviado do site");
StringBuffer msg = new StringBuffer();
msg.append("E-mail enviado do site da coopema").append(" \n \n");
msg.append("Nome: ").append(input.getStringValue("nome")).append(" \n");
msg.append("E-mail: ").append(input.getStringValue("email")).append(" \n");
msg.append("Telefone: ").append(input.getStringValue("telefone")).append(" \n");
msg.append("Mensagem: ").append(input.getStringValue("mensagem")).append(" \n \n");
simpleEmail.setMsg(msg.toString());
simpleEmail.send();
addMessage("E-mail enviado com sucesso");
input.removeValue("nome");
input.removeValue("email");
input.removeValue("telefone");
input.removeValue("emailSetor");
input.removeValue("mensagem");
return SUCCESS;
} catch (Exception e) {
e.printStackTrace();
return ExceptionFilter.EXCEPTION;
}
}
Code:
//Página que trata os erros
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<%@ taglib prefix="mtw" uri="mentawai" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Colégio São Lucas</title>
</head>
<body>
Infelizmente o sistema se comportou de maneira inesperada.
Informe o problema ao Analista Responsável.
<br>
<mtw:out value="message" />
<br>
<mtw:out value="stacktrace" />
<br>
<mtw:out value="stackheader" />
</body>
</html>
Será que está faltando alguma coisa?
Abraços a todos.