bom dia pessoal… fiz uma validação aqui… e quando eu digito um valor sem ser quebrado “380” tudo ok… agora quando eu digito um valor ‘‘380,23’’ dá um erro assim ‘‘java.lang.ClassCastException: java.lang.Double cannot be cast to java.lang.Long’’ a minha variável é do tipo long e meu campo no banco é double… reparei que se eu colocar ponto no lugar da virgula ele não dá o erro… mas no entanto na hora de passar na validacão ele entende que o valor digitado é maior… pq???
essa é minha rotina de validação…
[code]public void validate(FacesContext arg0, UIComponent arg1, Object value) {
Long salarioAtual = ((Long) value).longValue();
Long Maximo = salarioMaximo;
Long Minimo = salarioMinimo;
if (value == null)
return;
if ((salarioAtual < Minimo) || (salarioAtual > Maximo)) {
FacesMessage message = new FacesMessage(
"*Valor especificado não está entre os esperados para o sexo selecionado. Minimo: R$"
+ salarioMinimo + " Máximo: R$" + salarioMaximo);
throw new ValidatorException(message);
}
}[/code]
blz cara… agora passei pra float… debuguei e reparei que agora é atribuido valores com ponto flutuante…
mas hora que chega na validação dá o erro ‘‘java.lang.Long cannot be cast to java.lang.Float’’ converti tudo já… afff??? help…
public void validate(FacesContext arg0, UIComponent arg1, Float value) {
Float salarioAtual = value;
Float Maximo = salarioMaximo;
Float Minimo = salarioMinimo;
if (value == null)
return;
if ((salarioAtual < Minimo) || (salarioAtual > Maximo)) {
FacesMessage message = new FacesMessage(
"*Valor especificado não está entre os esperados para o sexo selecionado. Minimo: R$"
+ salarioMinimo + " Máximo: R$" + salarioMaximo);
throw new ValidatorException(message);
}
}
Troquei o parametro do tipo Object por Float porque não entendi a necessidade de ser um Object, e não um Float já que a validação é de um valor com decimais.