Problema com conversao de moeda [JSF]

9 respostas
C

Iai pessual, bele?

to com um problema aki na minha app. Tenho um cadastro onde tenho um campo “salario”, nele to usando um converter para poder digitar o valor com virgula e não com ponto, e salvar no banco com ponto.

meu codigo esta assim:

<h:inputText id="idFuncTxtSalario" size="15" value="#{funcionarioBean.funcionario.salario}" required="false" style="color:black;"> <f:convertNumber type="currency"/> </h:inputText>

dessa forma eu tenho q digitar no campo, por exemplo: R$ 3453,90 …com o R$ na frente, porem o ideal é que eu coloque só o valor sem simbolo monetario…começei a pesquisar e encontrei o atributo currencySymbol do f:convertNumber, porem quando adiciono ele, ai num funciona nem com e sem o simbolo monetario.

Alguem poderia me ajudar a resolver esse problema?

9 Respostas

W

Você conseguiu resolver este problema do converter para moeda?

C
~

import java.text.NumberFormat;
import java.util.Locale;
import java.util.regex.Pattern;

import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
import javax.faces.convert.Converter;
import javax.faces.convert.ConverterException;

public class ConverterDouble implements Converter{

	public Object getAsObject(FacesContext context, UIComponent component, String value) {
		
		if(value == null || value.trim().equals("")){
			return 0.0D;
		 }
			Boolean matcher = Pattern.matches("[0-9]+([.,][0-9]{2}+)?",value);
				if(matcher){
					value = value.replace(",", ".");
					return new Double(value);
				}
				else{
					FacesUtil.messageError("Formato Invalido");
					throw new ConverterException();
				}
	}

	public String getAsString(FacesContext context, UIComponent component, Object object) {
		
		if(object == null || object.toString().trim().equals("")){
			 return "0.00";
		 }
		 else{
			 NumberFormat nF = NumberFormat.getInstance(new Locale("pt", "BR"));
			 nF.setMaximumFractionDigits(2);
			 return nF.format(Double.valueOf(object.toString()));
		 }
	}  
}

Ve c isso serve ;D

A

ve se funciona assim:

<h:inputText value="#{pgto.vlrParcial}" id="txtVlrParcial" style="width:50px;"> <f:convertNumber pattern="##,###,###,###.##" minFractionDigits="2"/> </h:inputText>

S

estou com o mesmo problema, implementei o converte mais quando digito ex: 10.50 e inserido 10.5
queria que o zero tambem fosse inserido, mais se for digitado 10.51 ele grava corretamente

W

Usa String… :wink:

Não usa tipos inteiros…

É igual usar Long para CPF…
Se o cpf for [CPF removido] vai ficar no Long 111122.

A não ser que você concorde que 10.5 é igual a 10.50… hehehehe :smiley:

S

Mais eu preciso fazer calculos com esses numeros.
no caso tenho que passar para double depois?

W

Então não tem jeito… vai de Double… e no Conversor você coloca os zeros que precisar na apresentação…

S

na apresentação ele fica da forma correta 0.00
mais quando digito 10.50 ele so inseri 10.5 e digitar
10.51 ele grava certo, o problema e esse maldito zero

I

LOL

Véi…na boa…não faz diferença se ter o zero ou não né!

Faz ai, 10.50 + 0.01 e 10.5 + 0.01 e surpreenda-se! :D:D:D

Obs: ressuscitei o tópico pq não consegui não comentar nada…LOL

Criado 22 de julho de 2009
Ultima resposta 28 de jun. de 2012
Respostas 9
Participantes 7