Pessoal depois de bater muito a cabeça em busca de informações, finalmente consegui finalizar minha página de pesquisa dinâmica com JSF, estou postando abaixo um exemplo muito básico e lembrando que não sei se segue os melhores padrões.
Link para pesquisa: http://localhost:8080/Projeto/mostraUsuario.jsf?email=usuario1@dominio.com
Não fiz tratamentos avançados, mas se o valor estiver na lista a página é populada, caso não a página é mostrada sem o valor dos campos nome e email.
Eu presumo que vocês já tenham um conhecimento prévio de jsf portanto segue somente os arquivos envolvidos.
Página mostraUsuario.xhtml
<?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">
<h:head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
<title>Cadastro de Usuário</title>
</h:head>
<h:body>
<f:metadata>
<f:viewParam name="email" value="#{usuarioBean.usuario.email}"></f:viewParam>
<f:event listener="#{usuarioBean.pesquisar}" type="preRenderView"></f:event>
</f:metadata>
<h1>Cadastro de Usuário</h1>
<hr />
Nome: <h:outputText value="#{usuarioBean.usuario.nome}" />
<br />
E-mail: <h:outputLink value="mailto:#{usuarioBean.usuario.email}">
<h:outputText value="#{usuarioBean.usuario.email}" />
</h:outputLink>
<br />
</h:body>
</html>
package com.projeto;
import java.util.ArrayList;
import java.util.List;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;
@ManagedBean(name = "usuarioBean")
@RequestScoped
public class UsuarioBean {
private Usuario usuario = new Usuario();
private List<Usuario> usuarios;
public Usuario getUsuario() {
return usuario;
}
public void setUsuario(Usuario usuario) {
this.usuario = usuario;
}
public UsuarioBean() {
usuarios = new ArrayList<Usuario>();
usuarios.add(new Usuario("Usuario1", "usuario1@dominio.com"));
usuarios.add(new Usuario("Usuario2", "usuario2@dominio.com"));
}
public void pesquisar() {
boolean found = false;
for (int i = 0; i < usuarios.size(); i++) {
Usuario temp = usuarios.get(i);
if (temp.getEmail().contains(usuario.getEmail())) {
usuario = temp;
found = true;
break;
}
}
if (!found) {
usuario.setEmail("");
}
}
}