Bom dia
Estou começando uma aplicaçao em JSF 2.0 onde faço meu login e senha, e gostaria de armazenar esse valor do meu login em uma variavel de uma classe, para que depois eu possa utiliza-la em outras telas
mas se eu fizer uma classe de variaveis eu nao consigo pegar esse valor nas outras telas xhtml e outras classes mesmo.
Alguma sugestão?
Obrigado
agosti
Abril 3, 2012, 8:01am
#2
Olá Josivan,
De uma olhada nesse artigo do Rafael Ponte, ele explica como passar dados entre managed bens JSF, aqui esclarece seu problema:
http://www.rponte.com.br/2009/08/27/managed-beans-nao-complique-simplifique/
até
um managedBean de sessão resolve seu problema.
http://uaihebert.com/?p=836&page=8 aqui tem um modelo de MB de Sessão de usuário (procure por UserMB).
A única diferença seria na hora de buscar do banco de dados que poderia variar conforme o tipo de login que você fez.
Mas nao consegui entender como que consegue passar o valor e deixar fixo pro resto do sistema
hoje tenho o meu index assim:
<h:form>
<p:messages id="messages" showDetail="true" autoUpdate="true"/>
<h:panelGrid columns="2" id="pn" >
<h:outputLabel id="llogin" value="Login:"/>
<p:inputText id="ilogin" size="22" maxlength="21" value="#{telaLogin.login}" required="true"
requiredMessage="Necessário preenchimento do campo Login"/>
<h:outputLabel id="lsenha" value="Senha:"/>
<p:password id="isenha" size="22" maxlength="21" value="#{telaLogin.senha}" required="true" feedback="false" requiredMessage="Necessário preenchimento do campo Senha"/>
</h:panelGrid>
<p:focus for="ilogin"/>
<br></br>
<p:commandButton value="Logar" action="#{telaLogin.bLogar}"
update="pn"
onclick="chamados"/>
</h:form>
e a minha classe assim:
@ManagedBean
@RequestScoped
public class TelaLogin {
private String login = "";
private String senha = "";
private static ResultSet rs;
private Integer iCount = 0;
private String idCodigo;
public String getLogin() {
return login;
}
public void setLogin(String login) {
this.login = login;
}
public String getSenha() {
return senha;
}
public void setSenha(String senha) {
this.senha = senha;
}
public String getIdCodigo() {
return idCodigo;
}
public void setIdCodigo(String idCodigo) {
this.idCodigo = idCodigo;
}
public String bLogar() {
try {
Connection Conecta = Conexao.Conecta();
} catch (Exception ex) {
FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_FATAL, "Erro ao Conectar", ex.getMessage()));
}
try {
rs = Conexao.Consulta("select cod_usuario as qtd from geral_usuarios where usuario = '" + getLogin().toString() + "' and senha = '" + getSenha().toString() + "'");
while (rs.next()) {
iCount = rs.getInt("qtd");
}
if (iCount == 0) {
FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR, "Falha ao Logar", "Usuário e/ou Senha incorretos. Verifique!"));
} else {
return "chamados";
}
} catch (SQLException ex) {
FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR, "Erro ao Conectar", ex.getMessage()));
}
return "index";
}
gostaria de conseguir passar o meu COD_USUARIO do meu select, para uma variavel e que fosse possivel usar ela em todo o sistema, uma vez logado
obrigado a todos!
Troca o TelaLogin para SessionScoped e salve dentro dele o que você quer que seja exibida em qualquer tela.
Aí você faz: “#{telaLogin.O_VALOR_QUE_VC_QUER}”
funcionou perfeitamente!!
Obrigado!