Validar numero em JSF

4 respostas
I

Olá pessoal, vim expor mais uma dúvida minha, quando trabalhamos com valores numericos em Java o separador decimal é o ponto “.”, entretanto, na minha aplicação preciso fazer uso de uma virgula “,” como separador decima.
Há algum mecanismo que o JSF disponibiliza par que eu cumpra a minha tarefa ou tudo o que eu posso fazer é customizar um conversor para essa tarefa?
Outra dúvida é saber como eu faria nesses campos para barrar a inserção de qualquer dado que não seja um número ou uma vírgula.
Desde já agradeço a atenção

4 Respostas

I

Olá pessoal,
consegui resolver parte do meu aperreio.

Eu fiz o seguinte, utilizei um convertedor padrão JSF e setei o padão da forma que eu desejava.

Eu usei a seguinte tag

<f:convertNumber pattern="##0,00" maxFractionDigits=“2”/>

Ainda preciso saber como impedir a digitação de qualquer coisa que não seja um número ou uma virgula.

M

Bom, você só conseguirá isto com javascript.

Este exemplo pode lhe ajudar:

function FormataValor&#40;campo, form&#41; &#123;
	form&#91;campo&#93;.value = FiltraCampo&#40;campo, form&#41;;
	vr = form&#91;campo&#93;.value;
	tam = vr.length;

	if &#40; tam &lt;= 2 &#41; 
 		form&#91;campo&#93;.value = vr ; 
 	if &#40; &#40;tam &gt; 2&#41; &amp;&amp; &#40;tam &lt;= 5&#41; &#41; 
 		form&#91;campo&#93;.value = vr.substr&#40; 0, tam - 2 &#41; + ',' + vr.substr&#40; tam - 2, tam &#41; ; 
 	if &#40; &#40;tam &gt;= 6&#41; &amp;&amp; &#40;tam &lt;= 8&#41; &#41; 
 		form&#91;campo&#93;.value = vr.substr&#40; 0, tam - 5 &#41; + '.' + vr.substr&#40; tam - 5, 3 &#41; + ',' + vr.substr&#40; tam - 2, tam &#41; ; 
 	if &#40; &#40;tam &gt;= 9&#41; &amp;&amp; &#40;tam &lt;= 11&#41; &#41; 
 		form&#91;campo&#93;.value = vr.substr&#40; 0, tam - 8 &#41; + '.' + vr.substr&#40; tam - 8, 3 &#41; + '.' + vr.substr&#40; tam - 5, 3 &#41; + ',' + vr.substr&#40; tam - 2, tam &#41; ; 
 	if &#40; &#40;tam &gt;= 12&#41; &amp;&amp; &#40;tam &lt;= 14&#41; &#41; 
 		form&#91;campo&#93;.value = vr.substr&#40; 0, tam - 11 &#41; + '.' + vr.substr&#40; tam - 11, 3 &#41; + '.' + vr.substr&#40; tam - 8, 3 &#41; + '.' + vr.substr&#40; tam - 5, 3 &#41; + ',' + vr.substr&#40; tam - 2, tam &#41; ; 
 	if &#40; &#40;tam &gt;= 15&#41; &amp;&amp; &#40;tam &lt;= 17&#41; &#41;
 		form&#91;campo&#93;.value = vr.substr&#40; 0, tam - 14 &#41; + '.' + vr.substr&#40; tam - 14, 3 &#41; + '.' + vr.substr&#40; tam - 11, 3 &#41; + '.' + vr.substr&#40; tam - 8, 3 &#41; + '.' + vr.substr&#40; tam - 5, 3 &#41; + ',' + vr.substr&#40; tam - 2, tam &#41; ;
	
&#125;

function FiltraCampo&#40;campo, form&#41;&#123;
	var s = &quot;&quot;;
	var cp = &quot;&quot;;
	vr = form&#91;campo&#93;.value;
	tam = vr.length;
	for &#40;i = 0; i &lt; tam ; i++&#41; &#123;  
		if &#40;vr.substring&#40;i,i + 1&#41; != &quot;/&quot; &amp;&amp; vr.substring&#40;i,i + 1&#41; != &quot;.&quot;  &amp;&amp; vr.substring&#40;i,i + 1&#41; != &quot;,&quot; &#41;&#123;
		 	s = s + vr.substring&#40;i,i + 1&#41;;&#125;
	&#125;
	form&#91;campo&#93;.value = s;
	return cp = form&#91;campo&#93;.value
&#125;

:okok:

I

Valeu, eu queria mesmo era me livrar do javascript de uma vez por todas, mas se num tem jeito :frowning:

T

Cara, mas nao tem nada que limita caracteres, sem que utilizemos o javascript ?

Exemplo, gostaria que certo campo “inputText” recebesse somente os caracteres ‘a’, ‘b’ e ‘c’.

[a-c] ou [A-C]

:stuck_out_tongue:

Criado 22 de dezembro de 2006
Ultima resposta 31 de ago. de 2009
Respostas 4
Participantes 3