<p:column headerText="Preço" sortBy="#{livro.preco}" filterBy="#{livro.preco}" filterFunction="#{livroBean.precoEhMenor}">
<h:outputText value="#{livro.preco}">
<f:convertNumber type="currency" pattern="R$ #0.00" currencySymbol="R$" locale="pt_BR"/>
</h:outputText>
</p:column>
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;
}
}
GRAVE: javax.el.MethodNotFoundException: /livro.xhtml @67,127 filterFunction="#{livroBean.precoEhMenor}": Method not found: br.com.caelum.livraria.bean.LivroBean@a66c10f.precoEhMenor(java.lang.Object, java.lang.Object, java.util.Locale)
at com.sun.faces.facelets.el.TagMethodExpression.invoke(TagMethodExpression.java:109)