반응형

로컬에서는 전~ 혀 문제가 없이 잘됨. 잘된다는 의미는

head 에 걸어놓은 js 파일들 전송 잘되고 css 안깨지고 백단에서도 오류가 없을 때.

 

그럴때 우선적으로 실서버 DB를 연결해서 실행해보자.

의외로 실서버 DB에 연결했을때 DB 세팅에서 놓친 부분이 있을 수 있다.

아주 위험한..주니어의 발상... 실서버 연결하면 안되요!!

 

그리고 JS / CSS 파일이 깨졌을 때 !

 

swiper.min.js 

Failed to execute 'getComputedStyle' on 'Window': parameter 1 is not of type 'Element'.

참고로 해당오류는 swiper-container / swiper-wrapper / swiper-slide 순서대로 안해줫을때 나타나는 오류이다

 

프론트의 문제가 아니라 백단에서 오류가 생겨서 F12 관리자 창에서도 Network 에 아무것도 안잡히고

'원인을 알수없는' 오류가 되어버린다.

 

분명 js/css 가 엉망진창이고 콘솔오류도 js에서 난다고 확인되는데 프론트에서 이상이 없다고 판단되면

실서버 DB붙여서 확인해볼것!

실서버 db 붙이면 안되요 ㅋㅋㅋㅋ 분명히 이유가 있습니다. 서버 로그를 확인하세요!

728x90
반응형

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
반응형

도.대.체

 

이유가 뭘까.

 

1. popup 페이지 jsp단에서 jquery로 cookie 생성

$.cookie('DOWNLOAD_STATUS', 'in progress', {path:'/'});

 

2.  controller 불러서 modelAndView excel 객체로 return.

 

return 할 excel 객체 생성 시 

 

Cookie cookie = new Cookie("DOWNLOAD_STATUS", "complete");
	cookie.setHttpOnly(true);
	cookie.setPath("/");					// 모든 경로에서 접근 가능하도록 
	response.addCookie(cookie);				// 쿠키저장

쿠키도 같이 생성하여 HttpServletResponse 에 추가. (response.addCookie)

 

3. jsp에서 cookie 값 확인

if($.cookie('DOWNLOAD_STATUS') == 'complete') {
   alert("성공");
}

 

4. 결과적으로 $.cookie('STATUS') == undefind

 

대체 왜??

 

크롬 개발자모드에서도 확실히 값이 확인되는데..

 

분명히 complete 라고 찍혀있지만 

개발자모드 console 에서 $.cookie('DOWNLOAD_STATUS'); 찍어보면 undefind로 나온다.

 

크롬 개발자모드 Application > cookies > 서버 주소로 들어가서 확인되는 쿠키를 찍었는데 undefind가 나온다고?...

이해가 안됨.

 

다음주에야 말로 문제 해결할것이다.

 

예상가능한 트러블로는

 

1. java단에서 HttpServletResponse 로 보내줬을때 jsp에서 잘 못받나?...뭔가 꼬이나?..

2. 데이터타입이 달라서 string으로 못읽어오나?..

 

이정도이다.

 

왜냐하면

 

관리자모드 Application cookies 에서 봤을 때 

1. jsp에서 cookie 생성했을때 --> 정상적인 값 (in progress)

2. java에서 jsp로 다시 넘어왔을때 ---> 정상적인 값 (complete)

 

인데... 넘어오고나서 콘솔로 쿠키찍어봤을 때 undefind 뜨는걸보니 ... 넘어올때 무슨 문제가 있던게 아닌가 싶다.

 

 

 

문제해결!!

Cookie cookie = new Cookie("DOWNLOAD_STATUS", "complete");
	cookie.setHttpOnly(false);              // true -> false로!!!!!
	cookie.setPath("/");					// 모든 경로에서 접근 가능하도록 
	response.addCookie(cookie);				// 쿠키저장

httpOnly를 false로 바꿔주면..해결 ^^......

728x90
반응형

Edit Configrations... > Gradle Debug > Debug all tasks on the execution graph 체크

 

728x90

+ Recent posts