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

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:

[code]

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;
}[/code]

Socorro me ajude…

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:

[quote=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! :)[/quote]

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!!!

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.