validaÇÃo nÃo aceita valores quebrados

5 respostas
T

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...

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);

		}
	}

5 Respostas

rdantas

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:

T

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…

rdantas

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.

rdantas

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

T

blz mano… deu certo… obrigado… bom trabalho

Criado 20 de fevereiro de 2008
Ultima resposta 20 de fev. de 2008
Respostas 5
Participantes 2