2017-11-20 2 views
0

나는 유효성 검사기로 @phone 주석을 사용 했으므로 잘못된 인수로 예외가 발생했습니다. 단서가 있습니까? 이 메신저에 @Ajay를 사용하여 전화 확인을하고 있지만 작동하지 않습니다.이 문제를 해결하고 인증 유효성 검사를위한 코드를 보내 주도록 도와주세요. 사용자 정의 유효성 확인에 대해 이해하려면 몇 가지 링크를 공유하십시오.java.lang.IllegalArgumentException : 인수 번호를 구문 분석 할 수 없습니다. 전화

이 내 모델 클래스 :

  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; 
      } 

      } 

이 내 사용자 정의 주석 class.This 코드 내가 인터넷에서 그것을 가지고 있지만에서 사용자 정의 유효성 검사를하는 방법을 내 project.i dono에서 구현할 때의 오류를 보여주는 내 계획. 아제 주석 :

  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 {}; 

      } 

이 내가이 Validator 클래스에서 검증을 행한 @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()-/.]*"); 
      } 

      } 

오류 내 코드를 실행하는 동안 :

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) 

답변

3
문제에 대한 해결책은 바로 귀하의 질문에

:

당신은 문자열을 구문 분석하려고
java.lang.NumberFormatException: For input string: "Phone" 

"전화 "숫자로. 물론 숫자가 없기 때문에 가능한 것은 아니지만 문자 만 포함됩니다.

+0

어디에서 그 형제를 바꿀 수 있습니까? 자세히 알려주십시오. – Ajay

+0

'NumberFormatException' 상태 아래의 줄. String의 구문 분석은'MessageFormat' 클래스에서 오는 것입니다. Validator에서는 메시지가'String message() default "{Phone}"이고, 그래서 여러분의 코드가 기본 메시지'{Phone}'을 정수로 파싱하려고 시도하는 것 같습니다. 기본 메시지를 사용하여 몇 가지 다른 방법을 시도해보십시오. 일반 텍스트 또는 메시지 묶음 키를 사용할 수 있습니다. 일반 텍스트로 시작하십시오 :'String message() default "Phone Validator Message";'이 작동하는지보십시오. '예'인 경우,'{Phone} '은 평범한 텍스트와 다른 무언가를 방아쇠를 당긴 것처럼 보입니다. – Korashen

+0

예를 들어 그 일이 많이 감사합니다. – Ajay

관련 문제