java.lang.IllegalArgumentException: can't parse argument number: Phone

16,617

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.

Share:
16,617
suvartheec
Author by

suvartheec

Updated on June 04, 2022

Comments

  • suvartheec
    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
    Admin over 6 years
    where can i change that bro can u please tell me in detail
  • Korashen
    Korashen over 6 years
    The lines below the NumberFormatException state, that the parsing of the String is coming from the MessageFormat class. In Validators, the message is this String 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
    Admin over 6 years
    Got the solution. Thanks for your help bro. :-)