Passo um exemplo de query string com JSF
Objetivo: Construir uma pagina que exiba produtos pelo id, usando a seguinte url localhost:8080/teste/produto/exibe.xhtml?id=9
Crie um projeto JSF com o nome teste e altere o url pattern para *.xhtml;
Adicine o classe Produto:
[code]package meupacote;
import java.math.BigDecimal;
public class Produto {
private Integer id;
private String descricao;
private BigDecimal preco;
public Produto() {
super();
}
public Produto(Integer id, String descricao, BigDecimal preco) {
super();
this.id = id;
this.descricao = descricao;
this.preco = preco;
}
// gettes and setters
}[/code]
Adicione a classe ProdutoBean:
[code]package meupacote;
import java.math.BigDecimal;
import java.util.LinkedHashMap;
import java.util.Map;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;
import javax.faces.context.FacesContext;
@ManagedBean
@RequestScoped
public class ProdutoBean {
private Map<Integer, Produto> produtos;
private Integer id;
public ProdutoBean() {
super();
String paramId = FacesContext.getCurrentInstance().getExternalContext()
.getRequestParameterMap().get("id");
if (paramId != null) {
id = new Integer(paramId);
}
produtos = new LinkedHashMap<Integer, Produto>();
produtos.put(1, new Produto(1, "xxx", new BigDecimal(111.11)));
produtos.put(2, new Produto(2, "yyy", new BigDecimal(222.22)));
produtos.put(3, new Produto(3, "zzz", new BigDecimal(333.33)));
}
public Produto getProduto() {
return produtos.get(id);
}
}[/code]
Em WebContent/ crie a pasta produto/ e adicione o arquivo exibe.xhtml:
[code]<?xml version="1.0" encoding="UTF-8"?>
<h:head>
Produto
</h:head>
Exibe Produto
Id
#{p.id}
Descrição
#{p.descricao}
Preço
[/code]
Inicie o servidor e acesse [url]http://localhost:8080/test/produto/exibe.xhtml?id=2[/url]
Se tudo ocorreu certo, a saida será:
[img]http://img843.imageshack.us/img843/479/saidab.png[/img]
Fiz isso usando apenas JSF. Agora vou adicionar FilterDispatch
Pare o servidor
Adicione o jar filterdispatch-1.xx.jar
Adicione a classe MeuFD
[code]package meupacote;
import javax.servlet.DispatcherType;
import javax.servlet.annotation.WebFilter;
import com.gmail.marcelojuniorceara.filterdispatch.FilterDispatchJSF;
@WebFilter(urlPatterns = “*”, dispatcherTypes = DispatcherType.REQUEST)
public class MeuFD extends FilterDispatchJSF {
}[/code]
Edite na classe ProdutoBean
String paramId = FacesContext.getCurrentInstance().getExternalContext()
.getRequestParameterMap().get("id");
para
String paramId = FacesContext.getCurrentInstance().getExternalContext()
.getRequestParameterMap().get(0);
Em WebContent/WEB-INF/ crie a pasta MeuFD/
Em WebContent/ recorte a pasta produto/ e cole dentro de WebContent/WEB-INF/MeuFD/
Em WebContent/WEB-INF/MeuFD/produto/ renomeie o arquivo exibe.xhtml para index.xhtml
Inicie o servidor e acesse http://localhost:8080/test/produto/2
Se tudo ocorreu certo, a saida será:

Neste ponto, FilterDispatch só ajuda. :thumbup: