0

Jquery data-table에 대한 서버 측 처리 작업으로 작동하는 작업 주석이 있습니다. datatable의 매개 변수를 가져 오는 동안 예외가 발생했습니다. PARAMS를 얻기위한 클래스입니다 :Datatable 매개 변수가 Null이되어 NumberFormatException : Null이 발생합니다. 어떤 해결책?

package com.healthslate.reports.view.actions; 

import javax.servlet.http.HttpServletRequest; 

public class DataTablesParamUtility { 

public static JQueryDataTableParamModel getParam(HttpServletRequest request) 
{ 
    if(request.getParameter("sEcho")!=null || request.getParameter("sEcho")!= "") 
    { 
     JQueryDataTableParamModel param = new JQueryDataTableParamModel(); 
     param.sEcho = request.getParameter("sEcho"); 
     param.sSearch = request.getParameter("sSearch"); 
     param.sColumns = request.getParameter("sColumns"); 
     param.iDisplayStart = Integer.parseInt(request.getParameter("iDisplayStart")); 
     param.iDisplayLength= Integer.parseInt(request.getParameter("iDisplayLength")); 
     param.iColumns = Integer.parseInt(request.getParameter("iColumns")); 
     param.iSortingCols = Integer.parseInt(request.getParameter("iSortingCols")); 
     param.iSortColumnIndex = Integer.parseInt(request.getParameter("iSortCol_0")); 
     param.sSortDirection = request.getParameter("sSortDir_0"); 
     return param; 
    }else 
     return null; 
    } 
} 

나는입니다 param.iDisplayStart = Integer.parseInt(request.getParameter("iDisplayStart"));

예외에 예외를 얻고있다 :

HTTP Status 500 - null 

type Exception report 

message null 

description The server encountered an internal error that prevented it from fulfilling this request. 

exception 

java.lang.NumberFormatException: null 
    java.lang.Integer.parseInt(Unknown Source) 
    java.lang.Integer.parseInt(Unknown Source) 
    com.healthslate.reports.view.actions.DataTablesParamUtility.getParam(DataTablesParamUtility.java:16) 
    com.healthslate.reports.view.actions.pageVisitReportModifiedAction.serverSideSearch(pageVisitReportModifiedAction.java:78) 
    sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) 
    sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) 
    java.lang.reflect.Method.invoke(Unknown Source) 
    com.opensymphony.xwork2.DefaultActionInvocation.invokeAction(DefaultActionInvocation.java:450) 
    com.opensymphony.xwork2.DefaultActionInvocation.invokeActionOnly(DefaultActionInvocation.java:289) 
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:252) 
    org.apache.struts2.interceptor.debugging.DebuggingInterceptor.intercept(DebuggingInterceptor.java:256) 
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246) 
    com.opensymphony.xwork2.interceptor.DefaultWorkflowInterceptor.doIntercept(DefaultWorkflowInterceptor.java:167) 
    com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98) 
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246) 
    com.opensymphony.xwork2.validator.ValidationInterceptor.doIntercept(ValidationInterceptor.java:265) 
    org.apache.struts2.interceptor.validation.AnnotationValidationInterceptor.doIntercept(AnnotationValidationInterceptor.java:68) 
    com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98) 
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246) 
    com.opensymphony.xwork2.interceptor.ConversionErrorInterceptor.intercept(ConversionErrorInterceptor.java:138) 
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246) 
    com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:239) 
    com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98) 
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246) 
    com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:239) 
    com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98) 
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246) 
    com.opensymphony.xwork2.interceptor.StaticParametersInterceptor.intercept(StaticParametersInterceptor.java:191) 
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246) 
    org.apache.struts2.interceptor.MultiselectInterceptor.intercept(MultiselectInterceptor.java:73) 
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246) 
    org.apache.struts2.interceptor.CheckboxInterceptor.intercept(CheckboxInterceptor.java:91) 
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246) 
    org.apache.struts2.interceptor.FileUploadInterceptor.intercept(FileUploadInterceptor.java:252) 
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246) 
    com.opensymphony.xwork2.interceptor.ModelDrivenInterceptor.intercept(ModelDrivenInterceptor.java:100) 
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246) 
    com.opensymphony.xwork2.interceptor.ScopedModelDrivenInterceptor.intercept(ScopedModelDrivenInterceptor.java:141) 
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246) 
    com.opensymphony.xwork2.interceptor.ChainingInterceptor.intercept(ChainingInterceptor.java:145) 
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246) 
    com.opensymphony.xwork2.interceptor.PrepareInterceptor.doIntercept(PrepareInterceptor.java:171) 
    com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98) 
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246) 
    com.opensymphony.xwork2.interceptor.I18nInterceptor.intercept(I18nInterceptor.java:161) 
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246) 
    org.apache.struts2.interceptor.ServletConfigInterceptor.intercept(ServletConfigInterceptor.java:164) 
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246) 
    com.opensymphony.xwork2.interceptor.AliasInterceptor.intercept(AliasInterceptor.java:193) 
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246) 
    com.opensymphony.xwork2.interceptor.ExceptionMappingInterceptor.intercept(ExceptionMappingInterceptor.java:189) 
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246) 
    com.googlecode.s2hibernate.struts2.plugin.interceptors.SessionTransactionInjectorInterceptor.intercept(SessionTransactionInjectorInterceptor.java:181) 
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246) 
    net.bull.javamelody.StrutsInterceptor.intercept(StrutsInterceptor.java:68) 
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246) 
    org.apache.struts2.impl.StrutsActionProxy.execute(StrutsActionProxy.java:54) 
    org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:563) 
    org.apache.struts2.dispatcher.ng.ExecuteOperations.executeAction(ExecuteOperations.java:77) 
    org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.doFilter(StrutsPrepareAndExecuteFilter.java:99) 
    org.displaytag.filter.ResponseOverrideFilter.doFilter(ResponseOverrideFilter.java:125) 
note The full stack trace of the root cause is available in the Apache Tomcat/7.0.35 logs. 

답변

2

NumberFormatException : 내게는 당신이 int 값으로 불법 값을 변환하려고 할 때 발생합니다. 당신은 당신이 int 값을 읽으려고하기 전에 값을 확인해야

//Check the `iDisplayStart` parameter is not null 
if(request.getParameter("iDisplayStart")!=null) 
//do the conversion if it is not null 
param.iDisplayStart = Integer.parseInt(request.getParameter("iDisplayStart")) 

참고 : iDisplayStart 매개 변수가 int 값으로 구문 분석 할 수있는 유효한 값을 포함해야합니다. 그렇지 않으면 NumberFormatException이됩니다. 또한 입력 값을 받아 유효성을 검사하고 변환을 수행하고 구문 분석 된 int 값을 반환하는 유틸리티 메서드를 만들 수 있습니다. 유틸리티 메서드에서 예외가 발생하면 오류 또는 오류를 나타내는 int 값을 반환합니다.

0

예외 처리로 불리는 일이 있습니다. 왜 그렇게하지 않았습니까? 코드를 try-catch 블록에 넣고 정확한 오류 소스를 찾으십시오.

숫자 형식 예외는 문자열 대신 숫자를 구문 분석하려고 할 때 발생합니다. 먼저 다음 코드를 확인하여 숫자 또는 문자열 인 경우 어떤 값을 가져 왔는지 확인하고, 코드가 완벽하게 작동하여 첫 번째 검토 의견 이어도 예외 처리를 올바르게 수행하십시오. 이어야

request.getParameter("iDisplayStart") 
+2

iDisplayStart는 datatable의 문자열 매개 변수입니다. –

관련 문제