2013-11-14 4 views
0

간단한 문제 알아요.하지만 잘못 된 것을 볼 수 없습니다. 다음 코드를 가지고 있습니다 :Java String to Long Conversion

String dxorderId = request.getParameter("orderid"); 
    long orderid = Long.parseLong((dxorderId)); 

이것은 PL/SQL 프로 시저에서 호출 된 서블릿 안에 있습니다. dxorderid의 값은 호출 된 페이지의 URL에있는 매개 변수에서 검색됩니다. 그러므로 그것은 문자열로 취급되는 것 같습니다. 그래서 저는 그 문자열을 long으로 변환해야합니다. 나는 위의 코드를 사용할 때, 나는 다음과 같은 오류 얻을 :

14-Nov-2013 13:07:41 org.apache.catalina.core.StandardWrapperValve invoke 
SEVERE: Servlet.service() for servlet [com.zf.proceed.service.servlets.ViewOrderServlet] in context with path [/webapp] threw exception 
java.lang.NumberFormatException: null 
at java.lang.Long.parseLong(Long.java:372) 
at java.lang.Long.parseLong(Long.java:461) 
at com.zf.proceed.service.servlets.ViewOrderServlet.doRequest(ViewOrderServlet.java:28) 
at com.zf.proceed.service.servlets.ProceedBaseServlet.doRequest(ProceedBaseServlet.java:106) 
at com.zf.proceed.service.servlets.ProceedBaseServlet.doGet(ProceedBaseServlet.java:39) 
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.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:99) 
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:1023) 
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589) 
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:310) 
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) 
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) 
at java.lang.Thread.run(Thread.java:619) 

을 내가 그것을 구문 분석 질수 있음을 의미 알고 있지만 나는 왜 캔트 잘 모릅니다. 입력되는 값은 1454입니다.

+5

'java.lang.NumberFormatException의이 아닌지 확인 여부를

String dxorderId = request.getParameter("orderid"); 

확인합니다. 'dxorderId'는 null입니다. –

+1

'java.lang.NumberFormatException : null '값이 null이고 null을 long으로 구문 분석 할 수 없습니다. –

+0

나는 request.getParameter.Try를 통해 매개 변수 값을 얻지 못하고 있다고 생각한다. dxorderId를 인쇄한다. –

답변

3

값이 1454이 아닌 것 같습니다. 값은이 라인에 의해 입증, null입니다 :

당신은 당신의 매개 변수 이름을 확인하고 확인해야합니다
java.lang.NumberFormatException: null 

당신이 경우 보이지 않는 문자를 포함하여, 권리를 가지고있다. java.lang.NumberFormatException: null

위의 문이 dxorderId에 대한 값이 널 (null)을 나타냅니다 :

+1

그 대문자 !!!! 내 인생의 헛된 일. 나는 그것이 단순한 무언가 일 줄 알았다. Chris에게 감사드립니다. 나는 너를 대답 할 때 나를 용납 할 것이다 !! – DaRoGa

0

밀접하게 예외를 살펴 보자. 문자열 dxorderId 다음 null의 경우

String dxorderId = request.getParameter("orderid"); 
3
java.lang.NumberFormatException: null 

그것이

해결책

확인 dxorderIdnull하지 empty string

if(dxorderId != null && !dxorderId.equals("")) 
{ 
    long orderid = Long.parseLong((dxorderId)); 
} 
없는 NumberFormatException이 발생합니다 : 문제는이 라인이다

oracle docs NumberFormatException

public class NumberFormatException 
     extends IllegalArgumentException 

Thrown to indicate that the application has attempted to convert a string to one of the numeric types, but that the string does not have the appropriate format.

0

에서 잘 NumberFormatException 그것이 Long - 값을 나타내지 않기 때문에 주어진 데이터가 Long로 변환 할 수없는 것을 의미한다, 그래서 문제는 문자열의 근원에 놓여 , Java Long-Parser에는 없습니다.

특정 경우에 주어진 값은 null이며, 따라서 request.getParameter("orderid");null으로 반환됩니다.

0

java.lang.NumberFormatException: null

, 우리는 java.lang.NumberFormatException 원인 입니다 dxorderid 것을 배울 수 있습니다.

데이터를 분석하기 전에, 당신은 구문 분석 할 수있는 값이 처음 널 (null) 또는 빈 여부를 확인해야합니다.

0

오류가이 줄로 인한 것입니다. null` : 매개 변수 이름은 "OrderID를"올바른인지, 또는 그 값이 널 (null)