Formatação de Valores Monetarios

10 respostas Resolvido
programação
R

bom dia a todos, tenho uma tela de vendas (veja imagem anexa), nesta tela seleciono um produto para vender (ComboBox) e ao selecionar o produto o campo Valor Unitário é preenchido automaticamente pelo valor salvo no MySQL.

Preciso de ajuda para formatar esse valor, forma correta:

1.000,00

O valor está retornando com este formato:

1000,0 = ou seja, o ponto está faltando e uma casa decimal está faltando

Como resolver esse problema?

código usado para formatação:

List<Produto> listaDeProdutos = produtoRepository.findAll();
		txtProdutos.setItemLabelGenerator(Produto::getNome);
		txtProdutos.setItems(listaDeProdutos);
		txtProdutos.addValueChangeListener(event -> {
			
			NumberFormat formatter = NumberFormat.getNumberInstance(Locale.US);
			try {

				Number number = formatter.parse(event.getValue().getValor().toString());
				txtValorUnitario.setPrefixComponent(new Label("R$"));
				txtValorUnitario.setValue(BigDecimal.valueOf(number.doubleValue()));

			} catch (Exception e) {
				// TODO: handle exception
				e.printStackTrace();
			}

		});

10 Respostas

R

Tente pegar a NumberFormat assim:
NumberFormat.getCurrencyInstance(new Locale(“pt”, “BR”));

R
java.text.ParseException: Unparseable number: 1000.0

at java.base/java.text.NumberFormat.parse(NumberFormat.java:434)

at br.com.fjsistemas.cadastros.view.VendaView.lambda$12(VendaView.java:246)

at com.vaadin.flow.component.internal.AbstractFieldSupport.lambda$addValueChangeListener$828eca10$1(AbstractFieldSupport.java:96)

at com.vaadin.flow.component.ComponentEventBus.fireEventForListener(ComponentEventBus.java:205)

at com.vaadin.flow.component.ComponentEventBus.fireEvent(ComponentEventBus.java:194)

at com.vaadin.flow.component.Component.fireEvent(Component.java:359)

at com.vaadin.flow.component.ComponentUtil.fireEvent(ComponentUtil.java:386)

at com.vaadin.flow.component.internal.AbstractFieldSupport.setValue(AbstractFieldSupport.java:207)

at com.vaadin.flow.component.internal.AbstractFieldSupport.setModelValue(AbstractFieldSupport.java:167)

at com.vaadin.flow.component.AbstractField.setModelValue(AbstractField.java:225)

at com.vaadin.flow.component.AbstractSinglePropertyField.handlePropertyChange(AbstractSinglePropertyField.java:352)

at com.vaadin.flow.component.AbstractSinglePropertyField.access$200(AbstractSinglePropertyField.java:48)

at com.vaadin.flow.component.AbstractSinglePropertyField$1.propertyChange(AbstractSinglePropertyField.java:325)

at com.vaadin.flow.internal.nodefeature.ElementPropertyMap.lambda$fireEvent$2(ElementPropertyMap.java:454)

at java.base/java.util.ArrayList.forEach(ArrayList.java:1507)

at com.vaadin.flow.internal.nodefeature.ElementPropertyMap.fireEvent(ElementPropertyMap.java:454)

at com.vaadin.flow.internal.nodefeature.ElementPropertyMap.access$100(ElementPropertyMap.java:48)

at com.vaadin.flow.internal.nodefeature.ElementPropertyMap$PutResult.run(ElementPropertyMap.java:166)

at com.vaadin.flow.server.communication.ServerRpcHandler.runMapSyncTask(ServerRpcHandler.java:395)

at com.vaadin.flow.server.communication.ServerRpcHandler.lambda$handleInvocations$0(ServerRpcHandler.java:389)

at java.base/java.util.ArrayList.forEach(ArrayList.java:1507)

at com.vaadin.flow.server.communication.ServerRpcHandler.handleInvocations(ServerRpcHandler.java:389)

at com.vaadin.flow.server.communication.ServerRpcHandler.handleRpc(ServerRpcHandler.java:317)

at com.vaadin.flow.server.communication.UidlRequestHandler.synchronizedHandleRequest(UidlRequestHandler.java:89)

at com.vaadin.flow.server.SynchronizedRequestHandler.handleRequest(SynchronizedRequestHandler.java:40)

at com.vaadin.flow.server.VaadinService.handleRequest(VaadinService.java:1547)

at com.vaadin.flow.server.VaadinServlet.service(VaadinServlet.java:247)

at com.vaadin.flow.spring.SpringServlet.service(SpringServlet.java:111)

at javax.servlet.http.HttpServlet.service(HttpServlet.java:733)

at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)

at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)

at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:712)

at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:459)

at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:352)

at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:312)

at org.springframework.web.servlet.mvc.ServletForwardingController.handleRequestInternal(ServletForwardingController.java:141)

at org.springframework.web.servlet.mvc.AbstractController.handleRequest(AbstractController.java:177)

at org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter.handle(SimpleControllerHandlerAdapter.java:52)

at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1060)

at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:962)

at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006)

at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:909)

at javax.servlet.http.HttpServlet.service(HttpServlet.java:652)

at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883)

at javax.servlet.http.HttpServlet.service(HttpServlet.java:733)

at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)

at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)

at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)

at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)

at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)

at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100)

at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)

at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)

at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)

at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93)

at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)

at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)

at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)

at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201)

at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)

at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)

at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)

at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:202)

at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:97)

at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:542)

at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:143)

at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)

at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:78)

at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343)

at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:374)

at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65)

at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:888)

at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1597)

at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)

at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)

at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)

at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)

at java.base/java.lang.Thread.run(Thread.java:830)
R

da este erro ao tentar a solução que você passou

R
Solucao aceita

Troque esse código:

Number number = formatter.parse(event.getValue().getValor().toString());
txtValorUnitario.setPrefixComponent(new Label("R$"));
txtValorUnitario.setValue(BigDecimal.valueOf(number.doubleValue()));

Por esse:

txtValorUnitario.setPrefixComponent(new Label("R$"));
txtValorUnitario.setValue(formatter.format(event.getValue().getValor());
R

R

Consegui resolver o problema…com este ultimo codigo que vc mandou eu precisava trocar o tipo de campo

ANTES:

BigDecimalField txtValorUnitario = new BigDecimalField(“Valor Unitário”);

ATUAL:

Textfield txtValorUnitario = new Textfield(“Valor Unitário”);

R

muito obrigado…gratidão!!

R

Eu assumi que era um campo de texto kkk

R

man, se vc puder me ajudar com este outro problema, fico agradecido

Multiplicação de Valores - Programação - GUJ

R

Multiplicação de Valores - Programação - GUJ

Criado 16 de março de 2021
Ultima resposta 16 de mar. de 2021
Respostas 10
Participantes 2