Me gustaria saber, como poder validar diferentes formatos de moneda, en
concreto, todas las monedas de habla hispana.
Es decir,
El usuario debe insertar el precio, y mediante Struts (ActionForm)
recoger dicho valor y validar si el formato es correcto.
Verificar separador de miles, separador de decimales etc...
Un cordial Saludo
Joan
Intento simular que estoy ubicado en Republica Dominicana, cuyo formato
de numero puede ser:
Separador de miles: ,
Separador de decimales es: .
Por tanto: 2,500.25 Deberia ser correcto y me da un error:
Formato = ¤#,##0.00;(¤#,##0.00)
Price = 2,500.25
java.text.ParseException: Unparseable number: "2.500,25"
at java.text.NumberFormat.parse(Unknown Source)
at com.solostocks.util.CurrencyUtils.isValid(CurrencyUtils.java:88)
at com.solostocks.util.CurrencyUtils.isValid(CurrencyUtils.java:126)
at com.solostocks.supply.form.SupplyForm.validate(SupplyForm.java:70)
at
org.apache.struts.chain.commands.servlet.ValidateActionForm.validate(ValidateActionForm.java:53)
at
org.apache.struts.chain.commands.AbstractValidateActionForm.execute(AbstractValidateActionForm.java:100)
at
org.apache.struts.chain.commands.ActionCommandBase.execute(ActionCommandBase.java:48)
at org.apache.commons.chain.impl.ChainBase.execute(ChainBase.java:190)
at
org.apache.commons.chain.generic.LookupCommand.execute(LookupCommand.java:304)
at org.apache.commons.chain.impl.ChainBase.execute(ChainBase.java:190)
at
org.apache.struts.chain.ComposableRequestProcessor.process(ComposableRequestProcessor.java:280)
at
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1858)
at
org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:459)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:709)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:237)
at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:157)
at com.solostocks.lang.SaveCurrency.doFilter(SaveCurrency.java:166)
at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:186)
at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:157)
at
com.solostocks.general.AuthorizatorFilter.doFilter(AuthorizatorFilter.java:127)
at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:186)
at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:157)
at com.solostocks.lang.SaveLanguage.doFilter(SaveLanguage.java:106)
at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:186)
at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:157)
at
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:214)
at
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
at
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
at
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
at
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
at
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
at
org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:825)
at
org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:731)
at
org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:526)
at
org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80)
at
org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
at java.lang.Thread.run(Unknown Source)
Si me podeis echar un cable os lo agradeceria.
Un saludo.
Joan
Tengo un clases CurrencyUtils he intento parsear lo que me ha
introducido el usuario, pero al ser tantas las opciones, me vuelvo un
poco loco.