Olá
o meu filtro precoEhMenor não funciona, digito pelo número, ou pela moeda (ex: 20, 2, R$) e não aparece nada. Alguém poderia me ajudar no que possa estar acontecendo?
Meu método precoEhMenor:
public boolean precoEhMenor(Object valorColuna, Object filtroDigitado, Locale locale) { // java.util.Locale
//tirando espaços do filtro
String textoDigitado = (filtroDigitado == null) ? null : filtroDigitado.toString().trim();
System.out.println("Filtrando pelo " + textoDigitado + ", Valor do elemento: " + valorColuna);
// o filtro é nulo ou vazio?
if (textoDigitado == null || textoDigitado.equals("")) {
return true;
}
// elemento da tabela é nulo?
if (valorColuna == null) {
return false;
}
try {
// fazendo o parsing do filtro para converter para Double
Double precoDigitado = Double.valueOf(textoDigitado);
Double precoColuna = (Double) valorColuna;
// comparando os valores, compareTo devolve um valor negativo se o value é menor do que o filtro
return precoColuna.compareTo(precoDigitado) < 0;
} catch (NumberFormatException e) {
// usuario nao digitou um numero
return false;
}
}
Trecho da minha página livro.xhtml
<p:column sortBy="#{livro.preco}" filterBy="#{livro.preco}" filterFunction="#{livroBean.precoEhMenor}">
<f:facet name="header">Preço</f:facet>
<h:outputText value="#{livro.preco}">
<f:convertNumber type="currency" pattern="R$ #0.00"
currencySymbol="R$" locale="pt_BR" />
</h:outputText>
</p:column>