Como capturar os valores de uma tela para outra para exibir os usuários? Uso jsf, spring, hibern jpa

Caros,
eu tenho uma tela de cadastro de usuario que tem o botão Salvar e Pesquisar. Quando o usuário informa o nome, login ou e-mail eu tenho que montar uma query para selecionar este usuário, e então, eu tenho que exibir este usuário na tela mostrarUsuario.xhtml. O problema é que não estou conseguindo pegar os valores destes campos no método getTodosPesquisa(). Estou usando spring, jsf, hibernate e jpa. Como que eu capturo estes campos? (ou parâmetros) ? Alguém pode me dar uma dica?

Tela de cadastro

<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
	  xmlns:h="http://java.sun.com/jsf/html"
	  xmlns:f="http://java.sun.com/jsf/core"
	  xmlns:ui="http://java.sun.com/jsf/facelets"
	  xmlns:c="http://java.sun.com/jstl/core"
	  xmlns:tr="http://myfaces.apache.org/trinidad"
	  lang="pt-br">
<body>
        
<ui:composition template="template.xhtml">
       
<ui:define name="titulo">
    Area Administrativa
</ui:define>

<ui:define name="conteudo">
	<div id="formulario">
		 
		<h:panelGrid columns="3" width="100%">
			<h:outputText value="Usuario" />
			<h:inputText id="usu_Nome" value="#{usuarioController.usuario.usu_Nome}" size="70" maxlength="60"
			             required="true" requiredMessage="Campo obrigatorio"/>
			<h:message for="usu_Nome"/>

			<h:outputText value="Login" />
			<h:inputText id="usu_Login" value="#{usuarioController.usuario.usu_Login}" size="40" maxlength="20"
			             required="true" requiredMessage="Campo obrigatorio" />
			<h:message for="usu_Login"/>


			<h:outputText value="Senha" />
			<h:inputSecret id="usu_Senha" value="#{usuarioController.usuario.usu_Senha}" size="40" maxlength="8"
			             required="true" requiredMessage="Campo obrigatorio" ></h:inputSecret>
			<h:message for="usu_Senha"/>

			<h:outputText value="E-Mail" />  
			<h:inputText id="usu_Email" value="#{usuarioController.usuario.usu_Email}" size="70" maxlength="60"
			             required="true" requiredMessage="Campo obrigatorio"/>
			<h:message for="usu_Email"/>

		</h:panelGrid>
		
		<h:panelGrid border="0" columns="2" width="100%">
			<h:column>
				<h:commandButton  value="Salvar"    action="#{usuarioController.salvar}" image="../images/btn_Salvar.jpg" />
			</h:column>
			<h:column>
			
				<h:commandButton value="Pesquisar" action="mostrarUsuarios" immediate="true" image="../images/btn_Pesquisar.jpg">
				</h:commandButton>          
				
			</h:column>
		</h:panelGrid> 
		
	</div>
</ui:define>

</ui:composition>
        
    </body>
</html>

Tela para exibir o usuario de acordo com a pesquisa

<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
	  xmlns:h="http://java.sun.com/jsf/html"
	  xmlns:f="http://java.sun.com/jsf/core"
	  xmlns:ui="http://java.sun.com/jsf/facelets"
	  xmlns:c="http://java.sun.com/jstl/core"
	  xmlns:tr="http://myfaces.apache.org/trinidad"
	  lang="pt-br">

<body>
        
<ui:composition template="template.xhtml">        
<ui:define name="titulo">
   	Lista de Usuarios
</ui:define>

	<ui:define name="conteudo">
	<div id="formulario">
	<h:messages />

	<h:dataTable border="1" id="usuarios" var="item" value="#{usuarioController.todosPesquisa}" 
		styleClass="data_Table" headerClass="header_data_Table" >
	
		<h:column id="column1">
			<h:outputText value="#{item.usu_Id}"/>
			<f:facet name="header" >
				<h:outputText value="ID" style="header"/>
			</f:facet>
		</h:column>
	
		<h:column id="column2">
			<h:outputText value="#{item.usu_Nome}"/>
			<f:facet name="header">
				<h:outputText value="Nome" style="width: 400px"/>
			</f:facet>
		</h:column>
		
		<h:column id="column3">
			<h:outputText value="#{item.usu_Login}" style="width: 250px"/>
			<f:facet name="header">
				<h:outputText value="Login"/>
			</f:facet>
		</h:column>
		
		<h:column id="column4">
			<h:outputText value="#{item.usu_Email}"/>
			<f:facet name="header">
				<h:outputText value="Email" style="width: 400px"/>
			</f:facet>
		</h:column>

		<h:column>
			<center>
				<h:commandButton value="Atualizar" image="../images/btn_Editar.gif" action="#{usuarioController.editar}"/>
			</center>
			<f:facet name="header">
				<h:outputText value="Atualizar"/>
			</f:facet>
		</h:column>

		<h:column>
			<center>
			   <h:commandButton value="Excluir" image="../images/btn_Excluir.gif" action="#{usuarioController.excluir}"/>
			</center>
			<f:facet name="header">
				<h:outputText value="Excluir"/>
			</f:facet>
		</h:column>
	</h:dataTable>
	</div>
	</ui:define>

</ui:composition>
        
    </body>
</html>

Código da classe UsuarioController

package br.com.integrator.controller;

import java.io.IOException;
import java.security.InvalidKeyException;
import java.security.NoSuchAlgorithmException;
import java.security.spec.InvalidKeySpecException;
import java.util.HashMap;
import java.util.Map;

import javax.annotation.Resource;
import javax.crypto.BadPaddingException;
import javax.crypto.IllegalBlockSizeException;
import javax.crypto.NoSuchPaddingException;
import javax.faces.context.FacesContext;
import javax.faces.model.DataModel;
import javax.faces.model.ListDataModel;
import javax.servlet.http.HttpSession;

import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Controller;

import br.com.integrator.dao.DaoGenerico;
import br.com.integrator.entities.Usuario;
import br.com.integrator.util.FacesUtils;
import br.com.netservice.login.CryptographyTripleDES;

@Controller("usuarioController")
@Scope("request")
public class UsuarioController 
{
	private Usuario usuario;
	
	@Resource
	private DaoGenerico<Usuario, Integer> usuarioDao;
	
	private DataModel model;
	
	public UsuarioController()
	{
		this.usuario = new Usuario();
	}
	
	//captura a sessao do contexto criado
	//pelo java server faces
	FacesContext fc = FacesContext.getCurrentInstance();
	HttpSession session = (HttpSession) fc.getExternalContext().getSession(false);
	
	public Usuario getUsuario() 
	{
		return usuario;
	}
	public void setUsuario(Usuario usuario) 
	{
		this.usuario = usuario;
	}
	public DaoGenerico<Usuario, Integer> getUsuarioDao() 
	{
		return usuarioDao;
	}
	public void setUsuarioDao(DaoGenerico<Usuario, Integer> usuarioDao) 
	{
		this.usuarioDao = usuarioDao;
	}
	public DataModel getModel() {
		return model;
	}
	public void setModel(DataModel model) {
		this.model = model;
	}


	public String paginaInicial()
	{
		return "frmHome";
	}
	
	//verifica a existencia do usuario e o retorna
	//de acordo com o e-mail
	/**
	private Usuario verificaUsuarioEmail(String email)
	{
		String query = "SELECT usu FROM Usuario usu WHERE usu.usu_Email = :email";
		Map<String, Object> params = new HashMap<String, Object>();
		params.put("email", email);
		
		return usuarioDao.pesqParam(query, params);
	}
	*/
	//verifica a existencia do usuario e o retorna
	//de acordo com o e-mail
	private Usuario verificaUsuario(String login)
	{
		String query = "SELECT usu FROM Usuario usu WHERE usu.usu_Login = :login";
		Map<String, Object> params = new HashMap<String, Object>();
		params.put("login", login);
		
		return usuarioDao.pesqParam(query, params);
	}

	
	//executa o login no sistema
	//direcionando o usuario ao local indicado
	public String login()
	{
		Usuario usu = verificaUsuario(usuario.getUsu_Login());
		
		//Verifica se a senha resultante é igual a senha encontrada no banco de dados
		if (usu != null && usu.getUsu_Senha().equals(usuario.getUsu_Senha()))
		{
			//cria uma sessao contendo o login do usuario
			session.setAttribute("user", usuario.getUsu_Login());
			
			//deixa o objeto usuario agora com os valores encontrados no banco
			usuario = usu;
			
			//caso a sessao msg esteja com valor, a remove
			if (session.getAttribute("msg") != null)
			{
				session.removeAttribute("msg");
			}

			//redireciona para a pagina da administracao
			return "loginCorreto";
		}
		else 
		{
			FacesUtils.mensErro("Usuario ou senha invalidos.");
		}
		return null;
	}
	
	public String novoUsuario()
	{
		this.usuario = new Usuario();
		return "frmUsuario";
	}

	public DataModel getTodos()
	{
		model = new ListDataModel(usuarioDao.todos());
		return model;
	}

	public DataModel getTodosPesquisa()
	{
		String sLogin = (String) FacesContext.getCurrentInstance().getExternalContext().
							              getRequestParameterMap().get("usu_Log");
		
		System.out.println(sLogin);
		
		String sWhere = new String();
		sWhere = "";
		
		Map<String, Object> params = new HashMap<String,Object>();
		
		if (usuario.getUsu_Nome() != null &&  !usuario.getUsu_Nome().isEmpty())
		{
			params.put("nome", "%" + usuario.getUsu_Nome() + "%");
			sWhere = sWhere + " AND usu.usu_Nome LIKE :nome ";
		};
		
		if (usuario.getUsu_Login() != null && !usuario.getUsu_Login().isEmpty())
		{
			params.put("login", "%" + usuario.getUsu_Login() + "%");
			sWhere = sWhere + " AND usu.usu_Login LIKE :login ";
		};
		
		if (usuario.getUsu_Email() != null && !usuario.getUsu_Email().isEmpty())
		{
			params.put("email", "%" + usuario.getUsu_Email() + "%");
			sWhere = sWhere + " AND usu.usu_Email LIKE :email ";
		};
		
		String query = "SELECT usu FROM Usuario usu WHERE (1=1) " + sWhere;
		
		
		model = new ListDataModel(usuarioDao.listPesqParam(query, params));
		
		return model;
	
	}
	
	public String salvar() throws InvalidKeyException, 
	                              NoSuchAlgorithmException, 
	                              NoSuchPaddingException, 
	                              InvalidKeySpecException, 
	                              IllegalBlockSizeException, 
	                              BadPaddingException, 
	                              IOException
	{
		if (usuario.getUsu_Id() == null)
		{
			if (usuario.getUsu_Senha() != null)
			{
					usuario.setUsu_Senha(senhaCriptografada(usuario.getUsu_Senha()));
				
			}
			
			usuarioDao.salvar(usuario);
			FacesUtils.mensInfo("Usuario cadastrado com sucesso.");
		}
		else
		{
			usuarioDao.atualizar(usuario);
			FacesUtils.mensInfo("Usuario atualizado com sucesso.");
		}
		
		return "frmUsuario";
	}
	
	public Usuario getUsuarioParaEditarExcluir()
	{
		Usuario usuario = (Usuario) model.getRowData();
		return usuario;
	}
	
	public String editar()
	{
		setUsuario(getUsuarioParaEditarExcluir());
		return "frmUsuario";
	}
	
	public String excluir()
	{
		Usuario usuario = getUsuarioParaEditarExcluir();
		usuarioDao.excluir(usuario);
		return "mostrarUsuarios";
	}
	
	
	public String SalvarUsuario()
	{
		//se não há usuario logado
		if (usuario.getUsu_Id() == null)
		{
			//verificar se o cadastro não possui um usuario com o mesmo login
			Usuario usu = verificaUsuario(usuario.getUsu_Login());
			
			if (usu != null && usu.getUsu_Login().equals(usuario.getUsu_Login()))
			{
				//lança um erro global informando a existencia do usuario
				FacesUtils.mensErro("Usuario invalido.");
				return null; //não redireciona a lugar algum
			}
			else
			{
				//caso o usuario nao seja cadastrado
				//grava no banco de dados
				usuario = usuarioDao.salvar(usuario);
				//cria uma sessao contendo o login do usuario
				session.setAttribute("user", usuario.getUsu_Login());
			}
		}
		else
		{
			//caso esteja logado
			//pega os dados encontrados no formulário e os salva
			usuarioDao.atualizar(usuario);
		}
		
		return "logado";
	}
	
	//vai para a área de usuário
	public String logar() 
	{
		if (session.getAttribute("user") != null)
			return "logado"; // se estiver logado, vai direto a área
		else
			return "logar"; // mostra o formulário de login
	}

	// sai da área do usuário
	public String logout() 
	{
		session.removeAttribute("user");
		return "logar";
	}	
	
	public String senhaCriptografada (String senhaUsuario) throws InvalidKeyException, NoSuchAlgorithmException, 
	NoSuchPaddingException, InvalidKeySpecException, IllegalBlockSizeException, BadPaddingException, IOException 
	{ 
		CryptographyTripleDES cryptography = CryptographyTripleDES.newInstance(); 

		String encryptedValue = cryptography.encrypt( senhaUsuario ); 
		//String decryptedValue = cryptography.decrypt( encryptedValue ); 
		
		return encryptedValue;
	} 
	
	
}

Olá.

Você pode salvar esses dados em uma Session. A Session será mantida em quanto o usuário logado estiver com a tela do browser aberta.

Como você irá usar esses valores em outros formulários acho o mais viável e fácil.