[RESOLVIDO] Problema com o metodo alterarSenha(hql + spring + jsf)

Pessoal

To tentando pegar o usuario logado e depois alterar a senha do tal usuario…
Estou usando 2 classes p pegar esse usuario, as classe sao: ContextoBean e ContextoUtil.
To utuziliando o metodo buscarPorLogin(consulta hql) depois eu chamo o metodo atualizarSenha p fazer o update no objeto
encontrado pelo metodo buscarPorLogin… Meu problema eh: Eu nao estou acertando fazer a chamada desses 2 metodos…
Vou colar as classes aqui p ver se vcs podem me ajudar com esse problema…


package requisicao.web;

import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.context.ExternalContext;
import javax.faces.context.FacesContext;

import requisicao.usuario.Usuario;
import requisicao.usuario.UsuarioRN;
@ManagedBean(name = "contextoBean")
@SessionScoped
public class ContextoBean {

	private Usuario	usuarioLogado = null;
	
	public Usuario getUsuarioLogado() {
		FacesContext context = FacesContext.getCurrentInstance();
		ExternalContext external = context.getExternalContext();
		String login = external.getRemoteUser();

		if (this.usuarioLogado == null || !login.equals(this.usuarioLogado.getLogin())) {

			if (login != null) {
				UsuarioRN usuarioRN = new UsuarioRN();
				this.usuarioLogado = usuarioRN.buscarPorLogin(login);
				//this.contaAtiva = null;

				
			}
		}
		return usuarioLogado;
	}
	
	public void setUsuarioLogado(Usuario usuario) {
		this.usuarioLogado = usuario;
	}
}
package requisicao.util;

import javax.faces.context.ExternalContext;
import javax.faces.context.FacesContext;
import javax.servlet.http.HttpSession;

import requisicao.web.ContextoBean;

public class ContextoUtil {

	public static ContextoBean getContextoBean() {
		FacesContext context = FacesContext.getCurrentInstance();
		ExternalContext external = context.getExternalContext();
		HttpSession session = (HttpSession) external.getSession(true);

		ContextoBean contextoBean = (ContextoBean) session.getAttribute("contextoBean");
		
		return contextoBean;
	}
}

UsuarioDAOHibernate

...
public void atualizar(Usuario usuario) {
		if (usuario.getPermissao() == null || usuario.getPermissao().size() == 0) {
			Usuario usuarioPermissao = this.carregar(usuario.getCodigo());		this.session.update(usuario);

			usuario.setPermissao(usuarioPermissao.getPermissao());
			this.session.evict(usuarioPermissao);
		}

	}

public Usuario buscarPorLogin(String login) {
		String hql = "select u from Usuario u where u.login = :login";
		Query consulta = this.session.createQuery(hql);
		consulta.setString("login", login);
		

		//TODO mostrar primeiramente com o list e depois apresentar o uniqueResult
		return (Usuario) consulta.uniqueResult();
	}
...
public void salvar(Usuario usuario) {
		this.session.save(usuario);
	}

UsuarioBean

public String salvar() {
		FacesContext context = FacesContext.getCurrentInstance();

		String senha = this.usuario.getSenha();
		if (!senha.equals(this.confirmarSenha)) {
			FacesMessage facesMessage = new FacesMessage(
					"A senha não foi confirmada corretamente");
			context.addMessage(null, facesMessage);
			return null;
		}

		SetorRN setorRN = new SetorRN();
		UsuarioRN usuarioRN = new UsuarioRN();
		this.usuario.setSetor(setorRN.buscarPorNome(this.setor));
		usuarioRN.salvar(this.usuario);
		
		return "this.destinoSalvar";
	}
//estou tendo problemas com o metodo abaixo... N sei como vou fazer a chamada do metodo 

public String atualizarSenha(){
		
		
		
		ContextoBean contextoBean = ContextoUtil.getContextoBean();
		FacesContext context = FacesContext.getCurrentInstance();
		
	 
		
		String senha = this.usuario.getSenha();
		if (!senha.equals(this.confirmarSenha)) {
			FacesMessage facesMessage = new FacesMessage(
					"A senha não foi confirmada corretamente");
			
	
			context.addMessage(null, facesMessage);
			return null;
		}
		//Nao estou acertando fazer a chamada do metodo... 
		UsuarioRN usuarioRN = new UsuarioRN();
		usuarioRN.buscarPorLogin(contextoBean.getUsuarioLogado().getLogin());
		
	
		
		
		return "this.destinoSalvar"; 
	}
<html xmlns="http://www.w3.org/1999/xhtml"
	xmlns:ui="http://java.sun.com/jsf/facelets"
	xmlns:h="http://java.sun.com/jsf/html"
	xmlns:f="http://java.sun.com/jsf/core">

<ui:composition template="/templates/interna.xhtml">
	<ui:define name="titulo">
Mudar senha
</ui:define>
	<ui:define name="corpo">
		<h:form id="cadastro">
			<h:messages />
			<br/>
			  <h:panelGrid columns="2">
				<h:outputLabel value="Senha:" for="senha" />
				<h:inputSecret id="senha" label="Senha"
					value="#{usuarioBean.usuario.senha}" required="true" />

				<h:outputLabel value="Confirmar Senha:" for="confirmarsenha" />
				<h:inputSecret id="confirmarsenha" label="Confirmar Senha"
					value="#{usuarioBean.confirmarSenha}" required="true" />
				
				
				
				<h:commandButton  action="#{usuarioBean.atualizarSenha}" value="Salvar" />
			</h:panelGrid>
		</h:form>
	</ui:define>
</ui:composition>

</html>

Entao pessoal, estou com serias dificuldades nessa parte…
Sou novo em desenvolvimento web, estou meio perdido com isso.
Espero q vcs possam me ajudar. Valeu :slight_smile:

Faz tempo que eu nao trabalho com JSF, então posso estar falando besteira, mas o seu action do seu commandButton nao precisa ser action="#{usuarioBean.atualizarSenha}" ?

Sim sim, correto… Meu problema eh qnd for chamar a consulta buscarPorLogin e passar os parâmetros.
Sei q tem q ter um setSenha fazer um update no usuairo…
No meu metodo atual ja tem o #{} no atualizarSenha, acabei de editar aki no post tb.

Entendeu a minha dificuldade ? Eh na chamada da consulta + o tal setSenha… eh isso q n sei fazer direito !

Vou colocar o atualizarSenha aki e na parte q eu to tendo dificuldade eu vou colocar o //

public String atualizarSenha(){  
          
          
          
        ContextoBean contextoBean = ContextoUtil.getContextoBean();  
        FacesContext context = FacesContext.getCurrentInstance();  
          
       
          
        String senha = this.usuario.getSenha();  
        if (!senha.equals(this.confirmarSenha)) {  
            FacesMessage facesMessage = new FacesMessage(  
                    "A senha não foi confirmada corretamente");  
              
      
            context.addMessage(null, facesMessage);  
            return null;  
        }  
        //Nao estou acertando fazer a chamada da consulta + colocar o setSenha...   
        UsuarioRN usuarioRN = new UsuarioRN();  
        usuarioRN.buscarPorLogin(contextoBean.getUsuarioLogado().getLogin());  
          
      
          
          
        return "this.destinoSalvar";   
    }  

E ai pessoal ? Alguém pode me ajudar a resolver o meu problema ?

:oops:

public String atualizarSenha(){
		
		
		
		ContextoBean contextoBean = ContextoUtil.getContextoBean();
		FacesContext context = FacesContext.getCurrentInstance();
		
	 
		
		String senha = this.usuario.getSenha();
		if (!senha.equals(this.confirmarSenha)) {
			FacesMessage facesMessage = new FacesMessage(
					"A senha não foi confirmada corretamente");
			
			context.addMessage(null, facesMessage);
			
			return null;
		}
		

		UsuarioRN usuarioRN= new UsuarioRN();
		Usuario usuarioLogado=usuarioRN.buscarPorLogin(contextoBean.getUsuarioLogado().getLogin());
		this.usuario.setSenha(senha);
		usuarioRN.salvar(usuarioLogado);
	
		
				
		return null; 
		
	}

Mudei o metodo… Mas sei q tem algo errado na passagem de parâmetros…
Ta dando esse erro:

java.lang.NullPointerException

javax.faces.el.EvaluationException: java.lang.NullPointerException
at javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:98)
at com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:98)
at javax.faces.component.UICommand.broadcast(UICommand.java:311)
at javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:781)
at javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:1246)
at com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:77)
at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:97)
at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:114)
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:310)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at requisicao.web.filter.ConexaoHibernateFilter.doFilter(ConexaoHibernateFilter.java:32)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:344)
at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:110)
at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:84)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:356)
at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:98)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:356)
at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:95)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:356)
at org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:79)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:356)
at org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:55)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:356)
at org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:36)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:356)
at org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:188)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:356)
at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:106)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:356)
at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:80)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:356)
at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:150)
at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:237)
at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:167)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:225)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:927)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1001)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:585)
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:312)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
at java.lang.Thread.run(Thread.java:662)
Caused by: java.lang.NullPointerException
at requisicao.web.UsuarioBean.atualizarSenha(UsuarioBean.java:122)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at com.sun.el.parser.AstValue.invoke(AstValue.java:234)
at com.sun.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:297)
at com.sun.faces.facelets.el.TagMethodExpression.invoke(TagMethodExpression.java:102)
at javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:84)
… 52 more

E ai blz, tenta fazer as correções abaixo para ver ser resolve.

crie um metodo atualizar

public void atualizar(Usuario usuario) {
		this.session.update(usuario);
	}

E altere seu método atualizarSenha

public String atualizarSenha(){

		ContextoBean contextoBean = ContextoUtil.getContextoBean();
		FacesContext context = FacesContext.getCurrentInstance();
		UsuarioRN usuarioRN= new UsuarioRN();

		//String senha = this.usuario.getSenha(); o erro NullPointerException deve ser aqui
          // o certo não seria pegar a senha do usuario logado, algo assim como abaixo 
         String senha = contextoBean.getUsuarioLogado().getSenha(); 
		if (!senha.equals(this.confirmarSenha)) {
			FacesMessage facesMessage = new FacesMessage(
					"A senha não foi confirmada corretamente");
			
			context.addMessage(null, facesMessage);
			
			return null;
		}
         //aqui vc chama o método atualizar que vc criou setando o usuario logado
		usuarioRN.atualizar(contextoBean.getUsuarioLogado());
		return null; 
		
	}

[quote=aprendizweb]E ai blz, tenta fazer as correções abaixo para ver ser resolve.

crie um metodo atualizar

public void atualizar(Usuario usuario) {
		this.session.update(usuario);
	}

E altere seu método atualizarSenha

[code]
public String atualizarSenha(){

	ContextoBean contextoBean = ContextoUtil.getContextoBean();
	FacesContext context = FacesContext.getCurrentInstance();
	UsuarioRN usuarioRN= new UsuarioRN();

	//String senha = this.usuario.getSenha(); o erro NullPointerException deve ser aqui
      // o certo não seria pegar a senha do usuario logado, algo assim como abaixo 
     String senha = contextoBean.getUsuarioLogado().getSenha(); 
	if (!senha.equals(this.confirmarSenha)) {
		FacesMessage facesMessage = new FacesMessage(
				"A senha não foi confirmada corretamente");
		
		context.addMessage(null, facesMessage);
		
		return null;
	}
     //aqui vc chama o método atualizar que vc criou setando o usuario logado
	usuarioRN.atualizar(contextoBean.getUsuarioLogado());
	return null; 
	
}

[/code][/quote]

E ai meu querido, blz ?

Eu ja tenho o metodo atualizar… Na verdade ele ta dentro do metodo salvar…

Ele aqui:
Classe: UsuarioRN

public void salvar(Usuario usuario) {

		Integer codigo = usuario.getCodigo();
		if (codigo == null || codigo == 0) {
			usuario.getPermissao().add("ROLE_USUARIO"); //Spring 
			this.usuarioDAO.salvar(usuario);

		} else {
			this.usuarioDAO.atualizar(usuario);
		}
	}

E aqui eu tenho
Classe: UsuarioDAOHibernate

public void atualizar(Usuario usuario) {
		if (usuario.getPermissao() == null || usuario.getPermissao().size() == 0) {
			Usuario usuarioPermissao = this.carregar(usuario.getCodigo());
			usuario.setPermissao(usuarioPermissao.getPermissao());
			this.session.evict(usuarioPermissao);
		}

		this.session.update(usuario);
	}

Blz, então deixe seu método atualizarSenha como abaixo e roda pra ver o que acontece.

[code] public String atualizarSenha(){

        ContextoBean contextoBean = ContextoUtil.getContextoBean();  
        FacesContext context = FacesContext.getCurrentInstance();  
        UsuarioRN usuarioRN= new UsuarioRN();  
  
         String senha = contextoBean.getUsuarioLogado().getSenha();   
        if (!senha.equals(this.confirmarSenha)) {  
            FacesMessage facesMessage = new FacesMessage(  
                    "A senha não foi confirmada corretamente");  
              
            context.addMessage(null, facesMessage);  
              
            return null;  
        }  
        usuarioRN.salvar(contextoBean.getUsuarioLogado());  
        return null;  
    }   [/code]

[quote=aprendizweb]Blz, então deixe seu método atualizarSenha como abaixo e roda pra ver o que acontece.

[code] public String atualizarSenha(){

        ContextoBean contextoBean = ContextoUtil.getContextoBean();  
        FacesContext context = FacesContext.getCurrentInstance();  
        UsuarioRN usuarioRN= new UsuarioRN();  
  
         String senha = contextoBean.getUsuarioLogado().getSenha();   
        if (!senha.equals(this.confirmarSenha)) {  
            FacesMessage facesMessage = new FacesMessage(  
                    "A senha não foi confirmada corretamente");  
              
            context.addMessage(null, facesMessage);  
              
            return null;  
        }  
        usuarioRN.salvar(contextoBean.getUsuarioLogado());  
        return null;  
    }   [/code][/quote]

Mas nesse caso, antes de salvar eu tenho q chamar o metodo bucarPorLogin…
eu fiz assim:

public String atualizarSenha(){
		
		ContextoBean contextoBean = ContextoUtil.getContextoBean();
		FacesContext context = FacesContext.getCurrentInstance();
		
		String senha = this.usuario.getSenha();
		if (!senha.equals(this.confirmarSenha)) {
			FacesMessage facesMessage = new FacesMessage(
					"A senha não foi confirmada corretamente");
			
			context.addMessage(null, facesMessage);
			System.out.println(getConfirmarSenha());
			return null;
		}
		
		UsuarioRN usuarioRN = new UsuarioRN();
		Usuario usuariLogado=usuarioRN.buscarPorLogin(contextoBean.getUsuarioLogado().getLogin());
		usuarioRN.salvar(usuarioLogado);    
		
	
			
		return null; 
		
	}

O erro continua…

Neste caso ficaria assim:

public String atualizarSenha(){
		
		ContextoBean contextoBean = ContextoUtil.getContextoBean();
		FacesContext context = FacesContext.getCurrentInstance();
		
		 String senha = contextoBean.getUsuarioLogado().getSenha(); //alterei apenas esta linha 
		if (!senha.equals(this.confirmarSenha)) {
			FacesMessage facesMessage = new FacesMessage(
					"A senha não foi confirmada corretamente");
			
			context.addMessage(null, facesMessage);
			System.out.println(getConfirmarSenha());
			return null;
		}
		
		UsuarioRN usuarioRN = new UsuarioRN();
		Usuario usuariLogado = usuarioRN.buscarPorLogin(contextoBean.getUsuarioLogado().getLogin());
		usuarioRN.salvar(usuarioLogado);    	
		return null; 	
	}

[quote=aprendizweb]Neste caso ficaria assim:

[code]
public String atualizarSenha(){

	ContextoBean contextoBean = ContextoUtil.getContextoBean();
	FacesContext context = FacesContext.getCurrentInstance();
	
	 String senha = contextoBean.getUsuarioLogado().getSenha(); //alterei apenas esta linha 
	if (!senha.equals(this.confirmarSenha)) {
		FacesMessage facesMessage = new FacesMessage(
				"A senha não foi confirmada corretamente");
		
		context.addMessage(null, facesMessage);
		System.out.println(getConfirmarSenha());
		return null;
	}
	
	UsuarioRN usuarioRN = new UsuarioRN();
	Usuario usuariLogado = usuarioRN.buscarPorLogin(contextoBean.getUsuarioLogado().getLogin());
	usuarioRN.salvar(usuarioLogado);    	
	return null; 	
}

[/code][/quote]

Foi exatamente como eu postei… mesmo erro…

Já tentou retirar a confirmação de senha só pra testar!!

public String atualizarSenha(){		
		ContextoBean contextoBean = ContextoUtil.getContextoBean();
		FacesContext context = FacesContext.getCurrentInstance();

		UsuarioRN usuarioRN = new UsuarioRN();
		Usuario usuariLogado = usuarioRN.buscarPorLogin(contextoBean.getUsuarioLogado().getLogin());
		usuarioRN.salvar(usuarioLogado);    	
		return null; 	
	}

Contudo testei daquela forma que descrevi criando um metodo atualizar(neste caso outro com um novo nome) e funcionou de boa!

[quote=aprendizweb]Já tentou retirar a confirmação de senha só pra testar!!

public String atualizarSenha(){		
		ContextoBean contextoBean = ContextoUtil.getContextoBean();
		FacesContext context = FacesContext.getCurrentInstance();

		UsuarioRN usuarioRN = new UsuarioRN();
		Usuario usuariLogado = usuarioRN.buscarPorLogin(contextoBean.getUsuarioLogado().getLogin());
		usuarioRN.salvar(usuarioLogado);    	
		return null; 	
	}

Contudo testei daquela forma que descrevi criando um metodo atualizar(neste caso outro com um novo nome) e funcionou de boa![/quote]

Vou criar outro metodo p ele fazer o update… Se for olhar deireito, o metodo salvar q ta nesse Bean eh exclusivo p o botao salvar da tela de usuario…
ele pega o codigo do setor na tabela setor e coloca esse codigo na tabela usuario… n tem pq eu chamar esse “salvar” p dar update na senha…

vou testar aki e depois eu posto :slight_smile:

[quote=aprendizweb]Já tentou retirar a confirmação de senha só pra testar!!

public String atualizarSenha(){		
		ContextoBean contextoBean = ContextoUtil.getContextoBean();
		FacesContext context = FacesContext.getCurrentInstance();

		UsuarioRN usuarioRN = new UsuarioRN();
		Usuario usuariLogado = usuarioRN.buscarPorLogin(contextoBean.getUsuarioLogado().getLogin());
		usuarioRN.salvar(usuarioLogado);    	
		return null; 	
	}

Contudo testei daquela forma que descrevi criando um metodo atualizar(neste caso outro com um novo nome) e funcionou de boa![/quote]

Meu querido, fiz exatamente o q vc postou… Qnd eu clico no botao q chamar o metodo"atualizarSenha" a tela pisca…
isso acontece qnd eu uso o Usuario usuarioLogado = usuarioRN.buscarPorLogin(FacesContext.getCurrentInstance().getExternalContext().getRemoteUser());

Eu coloquei um System.out.println(Usuario usuarioLogado = usuarioRN.buscarPorLogin(FacesContext.getCurrentInstance().getExternalContext().getRemoteUser()):wink:
p ver o q ele retorna, ele retornou isso: requisicao.usuario.Usuario@6d109613
Qnd eu uso o contextoBean.getUsuarioLogado().getLogin()); aquele erro continua…

Vou colar o codigo aqui p ver se v pode me ajudar:

UsuarioBean

public String atualizarSenha(){
	ContextoBean contextoBean = ContextoUtil.getContextoBean();  
        FacesContext context = FacesContext.getCurrentInstance(); 
        
        
        String senha = this.usuario.getSenha();
		if (!senha.equals(this.confirmarSenha)) {
			FacesMessage facesMessage = new FacesMessage(
					"A senha não foi confirmada corretamente");
			context.addMessage(null, facesMessage);
			return null;
		}
		/*
		
		
		UsuarioRN usuarioRN = new UsuarioRN();
		Usuario usuarioLogado = usuarioRN.buscarPorLogin(FacesContext.getCurrentInstance().getExternalContext().getRemoteUser());
		System.out.println(usuarioLogado);
		usuarioRN.atualizar(usuarioLogado);
		return null;
	}


------------------------------------------------

public String atualizar(){
		UsuarioRN usuarioRN = new UsuarioRN();
		usuarioRN.atualizar(this.usuario);
		return null;
		
	}

ContextoBean

ackage requisicao.web;

import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.context.ExternalContext;
import javax.faces.context.FacesContext;

import requisicao.usuario.Usuario;
import requisicao.usuario.UsuarioRN;
@ManagedBean(name = "contextoBean")
@SessionScoped
public class ContextoBean {

	private Usuario	usuarioLogado = null;
	
	public Usuario getUsuarioLogado() {
		FacesContext context = FacesContext.getCurrentInstance();
		ExternalContext external = context.getExternalContext();
		String login = external.getRemoteUser();

		if (this.usuarioLogado == null || !login.equals(this.usuarioLogado.getLogin())) {

			if (login != null) {
				UsuarioRN usuarioRN = new UsuarioRN();
				this.usuarioLogado = usuarioRN.buscarPorLogin(login);
				return null;

				
			}
		}
		return usuarioLogado;
	}
	
	public void setUsuarioLogado(Usuario usuario) {
		this.usuarioLogado = usuario;
	}
}

Fiz um System.out.println(usuarioLogado);

ele ta retornando isso: requisicao.usuario.Usuario@6d109613

:evil:

E ai Blz,!
Então ele retorna requisicao.usuario.Usuario@6d109613 devido seu objeto usuarioLogado ser do tipo Usuario, para vc retorna o nome do usuario ou o login que são do tipo String vc deveria fazer algo assim:
Estancia seu contextoBean e declare os get e set no seu UsuarioBean

private ContextoBean contexto = new ContextoBean(); gets e sets..
ai seu metodo alterarSenha ficaria assim, sem a necessidade do buscarporlogin:

[code]public String atualizarConta(){

	FacesContext context = FacesContext.getCurrentInstance();
	String senha = contexto.getUsuarioLogado().getSenha();  
        if (!senha.equals(this.confirmarSenha)) { 
		FacesMessage facesMessage = new FacesMessage(
				FacesMessage.SEVERITY_WARN, "Senha do Usuário",
				"A senha não foi confirmada corretamente");
		context.addMessage(null, facesMessage);
		return null;
	} else {
		UsuarioRN usuarioRN = new UsuarioRN();
		usuarioRN.atualizar(contexto.getUsuarioLogado());
		String login = this.contexto.getUsuarioLogado().getLogin();
		System.out.println("Login: "+login);
	}
	return null;
}[/code]

apenas copie e cole para testa.

[quote=aprendizweb]E ai Blz,!
Então ele retorna requisicao.usuario.Usuario@6d109613 devido seu objeto usuarioLogado ser do tipo Usuario, para vc retorna o nome do usuario ou o login que são do tipo String vc deveria fazer algo assim:
Estancia seu contextoBean e declare os get e set no seu UsuarioBean

private ContextoBean contexto = new ContextoBean(); gets e sets..
ai seu metodo alterarSenha ficaria assim, sem a necessidade do buscarporlogin:

[code]public String atualizarConta(){

	FacesContext context = FacesContext.getCurrentInstance();
	String senha = contexto.getUsuarioLogado().getSenha();  
        if (!senha.equals(this.confirmarSenha)) { 
		FacesMessage facesMessage = new FacesMessage(
				FacesMessage.SEVERITY_WARN, "Senha do Usuário",
				"A senha não foi confirmada corretamente");
		context.addMessage(null, facesMessage);
		return null;
	} else {
		UsuarioRN usuarioRN = new UsuarioRN();
		usuarioRN.atualizar(contexto.getUsuarioLogado());
		String login = this.contexto.getUsuarioLogado().getLogin();
		System.out.println("Login: "+login);
	}
	return null;
}[/code]

apenas copie e cole para testa.[/quote]

Fiz exatamente o q vc flw… a unica acoisa q aconteceu foi aparecer na tela: Senha do usuario.
No console ele nao retornou o login do ususario…

Eu consegui retornar o login do usuario, so q ta dando um erro:

org.hibernate.NonUniqueObjectException: a different object with the same identifier value was already associated with the session: [requisicao.usuario.Usuario#1]

Ele fala q um objeto diferente com o mesmo identificador ja esta associado nessa sessao !

Vou colar o metodo aqui:

public String atualizarSenha(){
		ContextoBean contextoBean = ContextoUtil.getContextoBean();  
        FacesContext context = FacesContext.getCurrentInstance(); 
     
        String senha = this.usuario.getSenha();
		if (!senha.equals(this.confirmarSenha)) {
			FacesMessage facesMessage = new FacesMessage(
					"A senha não foi confirmada corretamente");
			context.addMessage(null, facesMessage);
			return null;
		}
			
		UsuarioRN usuarioRN = new UsuarioRN();
		usuarioRN.buscarPorLogin(contextoBean.getUsuarioLogado().getLogin());
		System.out.println(contextoBean.getUsuarioLogado().getLogin());
		this.usuario.setSenha(senha);
		usuarioRN.atualizar(contextoBean.getUsuarioLogado());
		return null;
	}

Corrigi o erro acima… coloquei um session.clear(); antes do this.session.update(usuario);

Agora nao ta dando erro nenhum, mas a senha nao ta sendo atualizada.
Ele ta retornando no console o nome do usuario, mas nada de fazer update na senha :evil:

Pelo que vi nessa ultima parte do código, você tá atualizando a senha do this.usuario e passando pro banco o usuarioLogado.

Entendi… Como seria o certo ?
To meio perdido ainda : /