Erro java.lang.NullPointerException para recuperar valor de textfield JSF

3 respostas
J

Estou tentando recuperar valor de um campo textfield em um projeto JSF, mas o java sempre retorna o erro java.lang.NullPointerException.
O que eu estou fazendo de errado?

Segue o código usado:

private TextField txt_nome; 
  private TextField txt_login; 
  private TextField txt_senha; 
  private TextField txt_estabelecimento; 
  private Label lbl_imprimir; 

public String btn_cadastrar_action() throws SQLException, Exception {
        Conta cont= new Conta();
        try{       
        cont.setNome(getTxt_nome().getText().toString());
        cont.setLogin(getTxt_login().getText().toString());
        cont.setSenha(getTxt_senha().getText().toString());
        cont.setEstabelecimento(getTxt_estabelecimento().getText().toString());
        String aux = cont.cadastrar_login();
            getLbl_imprimir().setText(aux);
        }
        catch(Exception e)
        {
            JOptionPane.showMessageDialog(null, e);
        }
        return null;
    }

Socorro me ajude....

3 Respostas

nel

Muita calma nessa hora, você está utilizando JSF (Java Server Faces) e quer pegar valores de um textfield, na sua página web e está ocasionando este erro, é isso?

Porque se for amigo, não vai conseguir mesmo. Já pensou em utilizar Beans? :slight_smile:
Abraços!

Desculpas, não vi que utiliza label e etc, então está usando Swing mesmo, certo?
Veja a linha exata que o ocorre o NullPointerException, com absoluta certeza está dando get em um campo cujo valor está nulo.

Abraçosss! :slight_smile:

J

nel:
Muita calma nessa hora, você está utilizando JSF (Java Server Faces) e quer pegar valores de um textfield, na sua página web e está ocasionando este erro, é isso?

Porque se for amigo, não vai conseguir mesmo. Já pensou em utilizar Beans? :slight_smile:
Abraços!

Desculpas, não vi que utiliza label e etc, então está usando Swing mesmo, certo?
Veja a linha exata que o ocorre o NullPointerException, com absoluta certeza está dando get em um campo cujo valor está nulo.

Abraçosss! :)

Não estou utilizando Swing, quando se usa JSF (Java Server Faces) é possível adicionar componentes assim como no swing, mas esses componentes são adicionados numa página JSP.

A minha intenção é recuperar o valor digitado pelo usuário num campo textfield q adicionei através do JSF.
Como no código q postei, eu declaro esse campo como TextField e depois eu encapsulo para criar o get e o set. E o erro se dá examente quando eu uso o get do campo TextField, aí o java me retorna o erro java.lang.NullPointerException.

Estava usando como exemplo um outro projeto q vi pela net, e ele usa dessa forma para conseguir recuperar os caracteres digitados no campo.

Desde já agradeço pela sua ajuda!
Abraços!!!

thimor

olhe se no faces-config.xml se o Bean que voce criou esta com o escopo de sessao, pelo que voce esta falando ele provavelemte esta com escopo request. e o seu codigo tem que estar mais ou menos assim:

public class SeuBean {

    private String txtNome;

    public void setTxtNome(String s) {
         this.txtNome = s;
    }
    public String getTxtNome() {
        return txtNome
    }

    public String btn_cadastrar_action() throws SQLException, Exception {  
      Conta cont= new Conta();  
      try{         
      cont.setNome(getTxtNome());  
      cont.setLogin(getTxtLogin());  
      cont.setSenha(getTxtSenha());  
      cont.setEstabelecimento(getTxtEstabelecimento());  
      String aux = cont.cadastrar_login();  
          getLbl_imprimir().setText(aux);  
      }  
      catch(Exception e)  
      {  
          JOptionPane.showMessageDialog(null, e);  //Isso nao existe em JSF isso é DESKTOP
          //No minimo o codigo abaixo
          FacesMessage facesMsg = new FacesMessage(FacesMessage.SEVERITY_ERROR, e.getLocalizedMessage, e.getLocalizedMessage);
          FacesContext.getCurrentInstance().addMessage(null, facesMsg);
      }  
      return null;  
  }

agora a sua pagina deve ficar mais ou menos assim

<%@page contentType="text/html"%>
<%@page pageEncoding="UTF-8"%>
<%@taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
<%@taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
<html>
    
    <body>
        <f:view>

                <h:messages errorStyle="color: red" infoStyle="color: green" layout="table"/> //Vai mostrar a exececao que voce colocar
                
                <h:form>
                    <h:panelGrid columns="2">
                        <h:outputText value="Nome:"/>
                        <h:inputText value="#{seubean.txtnome}" />
                    </h:panelGrid>

                    <h:commandButton value="Confirmar" action="#{seubean.btn_cadastrar_action()}" />
                </h:form>
            </div>
        </f:view>
    </body>
</html>

o restante dos campos login, senha, vc altera. tem outras formas de fazer tb. Mas so funciona em JSF se for dessa maneira.

Criado 16 de outubro de 2009
Ultima resposta 17 de out. de 2009
Respostas 3
Participantes 3