valor null ao submeter formulário | JSF e Hibernate

Java

29/03/2012

Galera, to com um problema que deve ser muito simples de resolver, mas como to iniciando nesse mundo JPA, to apanhando pacas, vai vendo:
to usando JSF e Hibernate pra desenvolver uma aplicação, onde por enquanto to fazendo o sistema de login que como segue abaixo:
<?xml version=1.0 encoding=ISO-8859-1 ?>
<!DOCTYPE composition PUBLIC -//W3C//DTD XHTML 1.0 Transitional//EN http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd>
<ui:composition xmlns=http://www.w3.org/1999/xhtml
	xmlns:ui=http://java.sun.com/jsf/facelets
	xmlns:f=http://java.sun.com/jsf/core
	xmlns:h=http://java.sun.com/jsf/html
	template=/arquivos/administrarTemplate.xhtml>
	<ui:define name=conteudo>
		<h:form	rendered=#{!loginAdministradorManagedBean.loginAdministrador.validate}>
			<h:panelGrid columns=2>
				<h:outputLabel value=Login: for=login />
				<h:inputText name=login id=login />
				<h:outputLabel value=Senha: for=senha />
				<h:inputSecret name=senha id=senha />
				<h:commandButton value=Entrar
					action=#{loginAdministradorManagedBean.fazerLogin} />
			</h:panelGrid>
		</h:form>
	</ui:define>
</ui:composition>


Bom acontece que quando eu submeto esse formulário, o managedBean não recebe nenhum valor, nele eu mando imprimir o valor de login no método fazerLogin, não preciso ainda me preocupar com DAO, Hibernate, etc... preciso apenas que este valor chegue preenchido no método citado:
segue ManagedBean:
@ManagedBean
@SessionScoped
public class LoginAdministradorManagedBean {
	private String login, senha;
	private LoginAdministrador loginAdministrador = new LoginAdministrador();
//aqui eu tenho os Getters e Setters
	public String fazerLogin() {
		System.out.println(login); //aqui chega null
                System.out.println(senha); //aqui chega null
		if (loginAdministrador.fazerLogin(getLogin(), getSenha())) {// e aqui a comparação, logicamente vai retornar false.
			FacesContext fc = FacesContext.getCurrentInstance();
			HttpSession session = (HttpSession) fc.getExternalContext()
					.getSession(false);
			session.setAttribute(administrador, loginAdministrador.getAdministrador());
			return /sucesso.xhtml;
		} else {
			return /falha.xhtml;
		}
	}

}


Sou novo em programação em geral, desde já obrigado!
By Joilson
Jean Lenon

Jean Lenon

Curtidas 0

Respostas

Jean Lenon

Jean Lenon

29/03/2012

Não achei onde editar o post aqui, por isso coloquei de novo o código, tomara que saía certinho(rsrs)
<?xml version=1.0 encoding=ISO-8859-1 ?>
<!DOCTYPE composition PUBLIC -//W3C//DTD XHTML 1.0 Transitional//EN http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd>
<ui:composition xmlns=http://www.w3.org/1999/xhtml
        xmlns:ui=http://java.sun.com/jsf/faceletsx
        xmlns:f=http://java.sun.com/jsf/core 
        xmlns:h=http://java.sun.com/jsf/html
        template=/arquivos/administrarTemplate.xhtml>
        <ui:define name=conteudo>
           <h:form rendered=#{!loginAdministradorManagedBean.loginAdministrador.validate}>
                          <h:panelGrid columns=2>
                             <h:outputLabel value=Login: for=login />
                             <h:inputText name=login id=login />
                             <h:outputLabel value=Senha: for=senha />
                             <h:inputSecret name=senha id=senha />
                             <h:commandButton value=Entrar action=#{loginAdministradorManagedBean.fazerLogin} />
                             </h:panelGrid>
          </h:form>
        </ui:define>
</ui:composition>

segue ManagedBean:
@ManagedBean
@SessionScoped
public class LoginAdministradorManagedBean {
	private String login, senha;
	private LoginAdministrador loginAdministrador = new LoginAdministrador();
//aqui eu tenho os Getters e Setters
	public String fazerLogin() {
		System.out.println(login); //aqui chega null
                System.out.println(senha); //aqui chega null
		if (loginAdministrador.fazerLogin(getLogin(), getSenha())) {// e aqui a comparação, logicamente vai retornar false.
			FacesContext fc = FacesContext.getCurrentInstance();
			HttpSession session = (HttpSession) fc.getExternalContext().getSession(false);
			session.setAttribute(administrador, loginAdministrador.getAdministrador());
			return /sucesso.xhtml;
		} else {
			return /falha.xhtml;
		}
	}
}

GOSTEI 0
Jean Lenon

Jean Lenon

29/03/2012

não achei onde editar o post aqui, por isso coloquei de novo o código, tomara que saía certinho(rsrs)

<?xml version=1.0 encoding=iso-8859-1 ?>
<!doctype composition public -//w3c//dtd xhtml 1.0 transitional//en http://www.w3.org/tr/xhtml1/dtd/xhtml1-transitional.dtd>
<ui:composition xmlns=http://www.w3.org/1999/xhtml
xmlns:ui=http://java.sun.com/jsf/faceletsx
xmlns:f=http://java.sun.com/jsf/core
xmlns:h=http://java.sun.com/jsf/html
template=/arquivos/administrartemplate.xhtml>
<ui:define name=conteudo>
<h:form rendered=#{!loginadministradormanagedbean.loginadministrador.validate}>
<h:panelgrid columns=2>
<h:outputlabel value=login: for=login />
<h:inputtext name=login id=login />
<h:outputlabel value=senha: for=senha />
<h:inputsecret name=senha id=senha />
<h:commandbutton value=entrar action=#{loginadministradormanagedbean.fazerlogin} />
</h:panelgrid>
</h:form>
</ui:define>
</ui:composition>

segue managedbean:

@managedbean
@sessionscoped
public class loginadministradormanagedbean {
private string login, senha;
private loginadministrador loginadministrador = new loginadministrador();
//aqui eu tenho os getters e setters
public string fazerlogin() {
system.out.println(login); //aqui chega null
system.out.println(senha); //aqui chega null
if (loginadministrador.fazerlogin(getlogin(), getsenha())) {// e aqui a comparação, logicamente vai retornar false.
facescontext fc = facescontext.getcurrentinstance();
httpsession session = (httpsession) fc.getexternalcontext().getsession(false);
session.setattribute(administrador, loginadministrador.getadministrador());
return /sucesso.xhtml;
} else {
return /falha.xhtml;
}
}
}


Nossaaaaa velho!
Depois de passar um dia inteiro procurando resolver essa bagaça, fui tomar um café e pensei em fazer um teste tipo olá mundo da vida ae, daí foi que percebi que na linha:

<h:inputText name=login id=login />

o certo seria:
<h:inputText name=login id=login value=#{loginAdministradorManagedBean.login}/>

e tá resolvido!
GOSTEI 0
Davi Costa

Davi Costa

29/03/2012

vc precisa na sua página colocar o value do seu managedBean nas tags da sua página:

<h:inputtext name=login id=login />


para:

<h:inputtext name=login id=login value =#{loginAdministradorManagedBean.login}/>

Para o jsf saber qual atributo deve receber akele valor...
faz o mesmo para a senha.

att Davi
GOSTEI 0
Jean Lenon

Jean Lenon

29/03/2012

Tá certinho, era apenas um dia inteiro seguido de pequenos outros probleminhas que me fizeram perder atenção nesse ponto do código. mas foi resolvido, eu só não sei onde que fecha o tópico, apesar de ter visto que um monte de gente pergunta isso...
GOSTEI 0
Diogo Souza

Diogo Souza

29/03/2012

não achei onde editar o post aqui, por isso coloquei de novo o código, tomara que saía certinho(rsrs)

<?xml version=1.0 encoding=iso-8859-1 ?>
<!doctype composition public -//w3c//dtd xhtml 1.0 transitional//en http://www.w3.org/tr/xhtml1/dtd/xhtml1-transitional.dtd>
<ui:composition xmlns=http://www.w3.org/1999/xhtml
xmlns:ui=http://java.sun.com/jsf/faceletsx
xmlns:f=http://java.sun.com/jsf/core
xmlns:h=http://java.sun.com/jsf/html
template=/arquivos/administrartemplate.xhtml>
<ui:define name=conteudo>
<h:form rendered=#{!loginadministradormanagedbean.loginadministrador.validate}>
<h:panelgrid columns=2>
<h:outputlabel value=login: for=login />
<h:inputtext name=login id=login />
<h:outputlabel value=senha: for=senha />
<h:inputsecret name=senha id=senha />
<h:commandbutton value=entrar action=#{loginadministradormanagedbean.fazerlogin} />
</h:panelgrid>
</h:form>
</ui:define>
</ui:composition>

segue managedbean:

@managedbean
@sessionscoped
public class loginadministradormanagedbean {
private string login, senha;
private loginadministrador loginadministrador = new loginadministrador();
//aqui eu tenho os getters e setters
public string fazerlogin() {
system.out.println(login); //aqui chega null
system.out.println(senha); //aqui chega null
if (loginadministrador.fazerlogin(getlogin(), getsenha())) {// e aqui a comparação, logicamente vai retornar false.
facescontext fc = facescontext.getcurrentinstance();
httpsession session = (httpsession) fc.getexternalcontext().getsession(false);
session.setattribute(administrador, loginadministrador.getadministrador());
return /sucesso.xhtml;
} else {
return /falha.xhtml;
}
}
}


nossaaaaa velho!
depois de passar um dia inteiro procurando resolver essa bagaça, fui tomar um café e pensei em fazer um teste tipo olá mundo da vida ae, daí foi que percebi que na linha:

<h:inputtext name=login id=login />

o certo seria:
<h:inputtext name=login id=login value=#{loginadministradormanagedbean.login}/>

e tá resolvido!

Só retificando, não esqueça as aspas dos atributos para deixar o código mais limpo e padronizado:
<h:inputText name=login id=login />

Abs!
GOSTEI 0
Diogo Souza

Diogo Souza

29/03/2012

Ops, agora que percebi que o editor de código é que não coloca as aspas! #desculpa :)
GOSTEI 0
Dyego Carmo

Dyego Carmo

29/03/2012

Deu certo ?

Valeu !
GOSTEI 0
POSTAR