java.lang.IllegalArgumentException: can't parse argument number: Phone
The solution to your problem is right in your question:
java.lang.NumberFormatException: For input string: "Phone"
You try to parse the String "Phone" as a number. Which, of course, is not possible, as it does not contain any numbers, but only characters.
suvartheec
Updated on June 04, 2022Comments
-
suvartheec almost 2 years
Since i used the @phone annotation as validator it rising some exception as illegal argument.Any clues? How to have our own annotation in this im using @Ajay for phone validating but its not working.Please help me to resolve this problem and send me code for having customize validation. or please share some links to understand about custom validation.
This is my model class:
package com.dineshonjava.bean; import com.dineshonjava.validator.Ajay; @Entity @Table(name="employees") @SecondaryTable(name="employeedetails") public class EmployeeBean { @Ajay private String phone; public String getPhone() { return phone; } public void setPhone(String phone) { this.phone = phone; } }
This is my customized annotation class.This code i got it from internet but its showing error when implementing in my project.i dono how to have customize validation in my project. Ajay Annotation:
package com.dineshonjava.validator; import java.lang.annotation.Documented; import java.lang.annotation.Retention; import java.lang.annotation.Target; import java.lang.annotation.ElementType; import java.lang.annotation.RetentionPolicy; import javax.validation.Constraint; import javax.validation.Payload; @Documented @Constraint(validatedBy = AjayValidator.class) @Target( { ElementType.METHOD, ElementType.FIELD }) @Retention(RetentionPolicy.RUNTIME) public @interface Ajay { String message() default "{Phone}"; Class<?>[] groups() default {}; Class<? extends Payload>[] payload() default {}; }
This is my Validator class here i did coding for validating my phone number here i did customized validation for that @Ajay annotation i did validation in this validator class. Ajay Validator:
package com.dineshonjava.validator; import javax.validation.ConstraintValidator; import javax.validation.ConstraintValidatorContext; public class AjayValidator implements ConstraintValidator<Ajay, String> { @Override public void initialize(Ajay ajay) { } @Override public boolean isValid(String phone, ConstraintValidatorContext cxt) { if(phone == null) { return false; } return phone.matches("[0-9()-/.]*"); } }
error while running my coding:
Nov 20, 2017 12:37:57 PM org.apache.catalina.core.AprLifecycleListener init INFO: The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: C:\Program Files\Java\jre1.8.0_151\bin;C:\Windows\Sun\Java\bin;C:\Windows\system32;C:\Windows;C:/Program Files/Java/jre1.8.0_151/bin/server;C:/Program Files/Java/jre1.8.0_151/bin;C:/Program Files/Java/jre1.8.0_151/lib/amd64;C:\ProgramData\Oracle\Java\javapath;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\ecllipse\eclipse;;. Nov 20, 2017 12:37:58 PM org.apache.tomcat.util.digester.SetPropertiesRule begin WARNING: [SetPropertiesRule]{Server/Service/Engine/Host/Context} Setting property 'source' to 'org.eclipse.jst.jee.server:Spring3HibernateApp' did not find a matching property. Nov 20, 2017 12:37:58 PM org.apache.coyote.AbstractProtocol init INFO: Initializing ProtocolHandler ["http-bio-8080"] Nov 20, 2017 12:37:58 PM org.apache.coyote.AbstractProtocol init INFO: Initializing ProtocolHandler ["ajp-bio-8009"] Nov 20, 2017 12:37:58 PM org.apache.catalina.startup.Catalina load INFO: Initialization processed in 438 ms Nov 20, 2017 12:37:58 PM org.apache.catalina.core.StandardService startInternal INFO: Starting service Catalina Nov 20, 2017 12:37:58 PM org.apache.catalina.core.StandardEngine startInternal INFO: Starting Servlet Engine: Apache Tomcat/7.0.47 log4j:WARN No appenders could be found for logger (org.springframework.web.servlet.DispatcherServlet). log4j:WARN Please initialize the log4j system properly. Nov 20, 2017 12:38:00 PM org.apache.catalina.core.ApplicationContext log INFO: Initializing Spring FrameworkServlet 'sdnext' Nov 20, 2017 12:38:02 PM org.apache.coyote.AbstractProtocol start INFO: Starting ProtocolHandler ["http-bio-8080"] Nov 20, 2017 12:38:02 PM org.apache.coyote.AbstractProtocol start INFO: Starting ProtocolHandler ["ajp-bio-8009"] Nov 20, 2017 12:38:02 PM org.apache.catalina.startup.Catalina start INFO: Server startup in 3897 ms Nov 20, 2017 12:38:04 PM org.apache.catalina.core.ApplicationDispatcher invoke SEVERE: Servlet.service() for servlet jsp threw exception java.lang.NumberFormatException: For input string: "Phone" at java.lang.NumberFormatException.forInputString(Unknown Source) at java.lang.Integer.parseInt(Unknown Source) at java.lang.Integer.parseInt(Unknown Source) at java.text.MessageFormat.makeFormat(Unknown Source) at java.text.MessageFormat.applyPattern(Unknown Source) at java.text.MessageFormat.<init>(Unknown Source) at org.springframework.context.support.MessageSourceSupport.createMessageFormat(MessageSourceSupport.java:115) at org.springframework.context.support.MessageSourceSupport.formatMessage(MessageSourceSupport.java:99) at org.springframework.context.support.AbstractMessageSource.renderDefaultMessage(AbstractMessageSource.java:275) at org.springframework.context.support.AbstractMessageSource.getMessage(AbstractMessageSource.java:152) at org.springframework.context.support.AbstractApplicationContext.getMessage(AbstractApplicationContext.java:1165) at org.springframework.web.servlet.support.RequestContext.getMessage(RequestContext.java:559) at org.springframework.web.servlet.support.BindStatus.initErrorMessages(BindStatus.java:177) at org.springframework.web.servlet.support.BindStatus.getErrorMessages(BindStatus.java:273) at org.springframework.web.servlet.tags.form.ErrorsTag.exposeAttributes(ErrorsTag.java:172) at org.springframework.web.servlet.tags.form.AbstractHtmlElementBodyTag.writeTagContent(AbstractHtmlElementBodyTag.java:48) at org.springframework.web.servlet.tags.form.AbstractFormTag.doStartTagInternal(AbstractFormTag.java:102) at org.springframework.web.servlet.tags.RequestContextAwareTag.doStartTag(RequestContextAwareTag.java:79) at org.apache.jsp.WEB_002dINF.views.addEmployee_jsp._jspService(addEmployee_jsp.java:393) at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70) at javax.servlet.http.HttpServlet.service(HttpServlet.java:728) at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:432) at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390) at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334) at javax.servlet.http.HttpServlet.service(HttpServlet.java:728) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:749) at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:487) at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:412) at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:339) at org.springframework.web.servlet.view.InternalResourceView.renderMergedOutputModel(InternalResourceView.java:238) at org.springframework.web.servlet.view.AbstractView.render(AbstractView.java:250) at org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1060) at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:798) at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:716) at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:647) at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:552) at javax.servlet.http.HttpServlet.service(HttpServlet.java:621) at javax.servlet.http.HttpServlet.service(HttpServlet.java:728) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100) at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:953) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408) at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1041) at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:603) at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:310) at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) at java.lang.Thread.run(Unknown Source) Nov 20, 2017 12:38:04 PM org.apache.catalina.core.StandardWrapperValve invoke SEVERE: Servlet.service() for servlet [sdnext] in context with path [/sdnext] threw exception [java.lang.IllegalArgumentException: can't parse argument number: Phone] with root cause java.lang.NumberFormatException: For input string: "Phone" at java.lang.NumberFormatException.forInputString(Unknown Source) at java.lang.Integer.parseInt(Unknown Source) at java.lang.Integer.parseInt(Unknown Source) at java.text.MessageFormat.makeFormat(Unknown Source) at java.text.MessageFormat.applyPattern(Unknown Source) at java.text.MessageFormat.<init>(Unknown Source) at org.springframework.context.support.MessageSourceSupport.createMessageFormat(MessageSourceSupport.java:115) at org.springframework.context.support.MessageSourceSupport.formatMessage(MessageSourceSupport.java:99) at org.springframework.context.support.AbstractMessageSource.renderDefaultMessage(AbstractMessageSource.java:275) at org.springframework.context.support.AbstractMessageSource.getMessage(AbstractMessageSource.java:152) at org.springframework.context.support.AbstractApplicationContext.getMessage(AbstractApplicationContext.java:1165) at org.springframework.web.servlet.support.RequestContext.getMessage(RequestContext.java:559) at org.springframework.web.servlet.support.BindStatus.initErrorMessages(BindStatus.java:177) at org.springframework.web.servlet.support.BindStatus.getErrorMessages(BindStatus.java:273) at org.springframework.web.servlet.tags.form.ErrorsTag.exposeAttributes(ErrorsTag.java:172) at org.springframework.web.servlet.tags.form.AbstractHtmlElementBodyTag.writeTagContent(AbstractHtmlElementBodyTag.java:48) at org.springframework.web.servlet.tags.form.AbstractFormTag.doStartTagInternal(AbstractFormTag.java:102) at org.springframework.web.servlet.tags.RequestContextAwareTag.doStartTag(RequestContextAwareTag.java:79) at org.apache.jsp.WEB_002dINF.views.addEmployee_jsp._jspService(addEmployee_jsp.java:393) at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70) at javax.servlet.http.HttpServlet.service(HttpServlet.java:728) at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:432) at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390) at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334) at javax.servlet.http.HttpServlet.service(HttpServlet.java:728) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:749) at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:487) at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:412) at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:339) at org.springframework.web.servlet.view.InternalResourceView.renderMergedOutputModel(InternalResourceView.java:238) at org.springframework.web.servlet.view.AbstractView.render(AbstractView.java:250) at org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1060) at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:798) at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:716) at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:647) at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:552) at javax.servlet.http.HttpServlet.service(HttpServlet.java:621) at javax.servlet.http.HttpServlet.service(HttpServlet.java:728) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100) at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:953) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408) at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1041) at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:603) at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:310) at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) at java.lang.Thread.run(Unknown Source)
-
Admin over 6 yearswhere can i change that bro can u please tell me in detail
-
Korashen over 6 yearsThe lines below the
NumberFormatException
state, that the parsing of the String is coming from theMessageFormat
class. In Validators, the message is thisString message() default "{Phone}";
So it seems that your code is trying to parse the default message{Phone}
as an Integer. Try some different approaches with the default message. You can use plain text or message bundle keys. Start with plain text:String message() default "Phone Validator Message";
and see if this works. If yes,{Phone}
seems to trigger something different then plain text ;-) -
Admin over 6 yearsGot the solution. Thanks for your help bro. :-)