NullPointerException JSF

3 respostas
J

galera

to com uma dficuldade no jsf

to fazendo uma tela de contato pra disparar a mesangem para o meu email....mas a questão eh que ta dando nullpointerException

olha o erro
javax.servlet.ServletException: #{emailBean.enviarEmailGmail}: java.lang.NullPointerException
	javax.faces.webapp.FacesServlet.service(FacesServlet.java:256)
	org.ajax4jsf.webapp.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:141)
	org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:281)

minha entidade

@Entity
public class EmailBean 
{
	private static final String NAO_FOI_POSSIVEL_ENVIAR_E_MAIL = "Não foi possível enviar o e-mail. Motivo: ";
	private File[] anexo;
	private String assuntoEmail;
	private String corpoEmail;
	private String emailRemetente;
	private String mimeCorpoEmail;
	private String nomeRemetente;
	private String portaServidor;
	private String smtpServidor;
	private String[] emailDestinatario;
	private String[] nomeDestinatario;

	public EmailBean()
	{
		super();
	}
                 //gets e sets
meu backbean
public class GeradorEmail 
{
	private EmailBean emailBean ;

public String enviarEmailGmail()    
	{
		java.security.Security.addProvider(new Provider());   
		  
        Properties mailProps = new Properties();   
        mailProps.put("mail.transport.protocol", "smtp"); // diz que utilizarei um protocolo de seguranca     
        mailProps.put("mail.smtp.starttls.enable", "true"); // diz que utilizarei o protocolo de seguranca TLS     
        mailProps.put("mail.smtp.host", "smtp.gmail.com"); // diz que o servidor que estou mandando o gmail     
        mailProps.put("mail.smtp.auth", "true"); // diz que e necessario uma autenticacao     
        mailProps.put("mail.smtp.user", "[email removido]");   
        mailProps.put("mail.debug", "true");   
        mailProps.put("mail.smtp.port", "465");   
        mailProps.put("mail.smtp.debug", "true");   
        mailProps.put("mail.mime.charset", "ISO-8859-1");   
        mailProps.put("mail.smtp.socketFactory.port", "465");   
        mailProps.put("mail.smtp.socketFactory.fallback", "false");   
        mailProps.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");   
  Authenticator auth = new Autenticacao();   
        Session session = Session.getDefaultInstance(mailProps, auth);   
  
        Message message = new MimeMessage(session);   
  
        try 
        {
	        message.setFrom(new InternetAddress(emailBean.getEmailRemetente()));   
	        message.setHeader("Disposition-Notification-To","[email removido]");
	        
	        String[] destAtual = emailBean.getEmailDestinatario();
        
			message.setRecipient(Message.RecipientType.TO, new InternetAddress(destAtual[0]));
			message.setSubject(emailBean.getAssuntoEmail());   
			  
	        message.setContent(emailBean.getCorpoEmail(), "text/html");   

	        Transport.send(message);
	        return "Email Enviado";
		} 
        catch (AddressException e) 
        {
			// TODO Auto-generated catch block
			e.printStackTrace();
			return "Email Nao Enviado";
		} catch (MessagingException e) 
		{
			// TODO Auto-generated catch block
			e.printStackTrace();
			return "Email Nao Enviado";
		} 
    }

mas qdo ele vai pegar o emailBean.getRemetente() da erro falando que emailBean esta nulo

ja tentei colocar isso

private EmailBean emailBean = new EmailBean();

alguem manja onde ta o erro?

3 Respostas

E

Posta ai o seu Web.xml e o Faces-config.xml
;D

J

entao nem to na empresa pra postar meu codig, mas axo q nao ta no web.xml nem o facesc-onfig porque varios outros MB e entidades tao funcionando da mesma forma

eu acredito que deve ser porque meu MB tem um atributo de uma classe que nao eh persistida no banco…
entao eu axo q deve ter alguma annotation pra definir ela…

porque esse atributo do MB (que no caso eh meu VO) nao vem preenchido…

nao pode ser isso?

rogeriuslima

Cara, primeiro vc precisa declarar no faces-config o seu back bean e o seu EmailBean, e declarar que o backbean tem uma propriedade EmailBean que é a mesma que vc declarou para ser injetado nele.
E por último vc precisa definir os metodos get e set no backbean para o jsf fazer a injeção de dependencia.

Criado 13 de julho de 2009
Ultima resposta 15 de jul. de 2009
Respostas 3
Participantes 3