validaÇÃo nÃo aceita valores quebrados

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]

Me corrijam se eu estiver errado, mas Long não aceita ponto flutuante, Se vc quer trabalhar com casas decimais use Float ou Double. :lol: :lol:

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…

Tente assim:

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.

espero ter ajudado.

Rodrigo.

Ops, já ia esquecendo, se salarioMaximo e salarioMinimo forem atributos do seu Bean, coloque eles como Float também.

blz mano… deu certo… obrigado… bom trabalho