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;
}
}