valor null ao submeter formulário | JSF e Hibernate
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:
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:
Sou novo em programação em geral, desde já obrigado!
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
Curtidas 0
Respostas
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)
segue ManagedBean:
<?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
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;
}
}
}
<?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
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
<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
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
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!
<?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
29/03/2012
Ops, agora que percebi que o editor de código é que não coloca as aspas! #desculpa :)
GOSTEI 0
Dyego Carmo
29/03/2012
Deu certo ?
Valeu !
Valeu !
GOSTEI 0