과거 게시글
jsp에서 java로 배열 array 전송 시 에러 java.lang.NumberFormatException: For input string: ""
악역영애
2021. 7. 27. 11:32
반응형
jsp단에서 java로 배열 array 전송 시 java.lang.NumberFormatException: For input string: "" 에러가 발생했다.
나의 경우
1. jsp에서 java 로 ajax 전송
var param = {
"id" :"123",
"isIssue" : "Y"
};
$.post('/경로', param, function(response){
if (response.isSuccess) alert("성공);
});
2. 그리고 java 컨트롤러에서 잘 들어왔는지 확인 후 처리
@RequestMapping(value="/경로")
@ResponseBody
public JsonView codeCheck(TaxInvoice invoice) {
//처리
}
들어올때 TaxInvoice 라는 dto 형식으로 들어오게되는데 해당 dto는 아래와 같다.
3. dto 형식
public class TaxInvoice {
private String[] id;
private String isIssue;
}
문제는 dto의 id를 보면 string[] array로 되어있었고 나는 파라미터를 보낼때 배열을 보내고싶었다.
var param = {
"id" :["123","123"],
"isIssue" : "Y"
};
그래서 위와같이 배열을 만들어서 넣어줬지만, 통하지 않았고 익셉션발생.
java.lang.NumberFormatException: For input string: "" (AbstractHandlerExceptionResolver.java : 133) *****
[07/27 10:56:32] OP-210727105632485-/opmanager/receipt/tax-invoice/update-status [AJAX] ERROR 1 - - - ***** [예외발생] {} (OpHandlerExceptionResolver.java : 76) *****
java.lang.NumberFormatException: For input string: ""
at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
at java.lang.Integer.parseInt(Integer.java:592)
at java.lang.Integer.parseInt(Integer.java:615)
at org.springframework.beans.AbstractNestablePropertyAccessor.setPropertyValue(AbstractNestablePropertyAccessor.java:327)
at org.springframework.beans.AbstractNestablePropertyAccessor.setPropertyValue(AbstractNestablePropertyAccessor.java:280)
at org.springframework.beans.AbstractPropertyAccessor.setPropertyValues(AbstractPropertyAccessor.java:95)
at org.springframework.validation.DataBinder.applyPropertyValues(DataBinder.java:834)
at org.springframework.validation.DataBinder.doBind(DataBinder.java:730)
at org.springframework.web.bind.WebDataBinder.doBind(WebDataBinder.java:189)
at org.springframework.web.bind.ServletRequestDataBinder.bind(ServletRequestDataBinder.java:106)
at org.springframework.web.servlet.mvc.method.annotation.ServletModelAttributeMethodProcessor.bindRequestParameters(ServletModelAttributeMethodProcessor.java:150)
at org.springframework.web.method.annotation.ModelAttributeMethodProcessor.resolveArgument(ModelAttributeMethodProcessor.java:110)
at org.springframework.web.method.support.HandlerMethodArgumentResolverComposite.resolveArgument(HandlerMethodArgumentResolverComposite.java:78)
at org.springframework.web.method.support.InvocableHandlerMethod.getMethodArgumentValues(InvocableHandlerMethod.java:162)
at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:129)
at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:110)
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:806)
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:729)
at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:959)
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:893)
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)
at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:872)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:660)
at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
해결방법은 ajax post 옵션 설정에 있었다.
ajax 옵션 중 traditional : true를 추가해야 했었다.
축약형 $.post 형식으로 쓰고있어서 옵션을 예쁘게 넣는방법이 없나 고민했지만, 결국 풀어쓰기로했다.
var param = {
"id" :["123","123"],
"isIssue" : "Y"
};
$.ajax({
type : "post",
url : "/경로",
data : param,
traditional : true,
dataType : "json",
success: function (response){
alert("성공");
location.reload();
}
});
이걸몰라 삽질하고있었다니!
728x90