과거 게시글

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