Galera,
eu tenho um formulario de pesquisa aparte do filros padroes da tabela do primefaces…
E estou usando o lazyLoading paginacao e tal… e o primefaces chama o método LOAD
passando um Map de parametros dos filtros(que no caso eu ignoro, pq pego os dados do form de pesquisa).
Para resolver esse problema eu fiz o seguinte…
criei uma classe JSF com allguns metodos auxiliares…
package br.com.sol7.olimpio.util;
import java.util.List;
import java.util.Map;
import javax.faces.context.ExternalContext;
import javax.faces.context.FacesContext;
import br.com.sol7.olimpio.util.filter.FilterCriteria;
public class JSFUtil {
//repare aqui
private static final String FILTER = "filter";
//repare aqui
@SuppressWarnings("unchecked")
public static List<FilterCriteria> getFilters() {
return (List<FilterCriteria>) getFromSessionMap(FILTER);
}
//repare aqui
public static void setFilters(List<FilterCriteria> filters) {
addToSessionMap(FILTER, filters);
}
//outros métodos nao precisa reparar, mas vou deixar aí caso alguem queira dar alguma sugestão
public static void addToSessionMap(String key, Object value) {
getSessionMap().put(key, value);
}
public static Object getFromSessionMap(String key) {
return getSessionMap().get(key);
}
public static Map<String, Object> getSessionMap() {
return getExternalContext().getSessionMap();
}
public static void invalidateSession() {
getExternalContext().invalidateSession();
}
public static ExternalContext getExternalContext() {
return FacesContext.getCurrentInstance().getExternalContext();
}
}
Bom, quando o cara clica no botão de pesquisa eu chama um metodo no meu MB que vai usar esse metodo ai pra jogar os valores da pesquisa na sessão…
E dentro do método load eu faço:
List<FilterCriteria> filter = JSFUtil.getFilters();
// Depois de consumir os dados do filtro, reset para forçar a injeção do
// filtro apenas quando clicar no botão.
JSFUtil.setFilters(null);
//uso os dados
bom o que acharam desse bypass?
acham que poderia melhorar…
com flashscope talvez? ou é só pra redirect?
ou assim ta bom?
abraços!!