스프링(egov)

18. JSP에서 자바단으로 배열넘길때 주의사항

웹꽃기사 2020. 11. 7. 01:49

자바로 넘기기 위해 INPUT 히든태그 생성

 

 

속성 동등 선택자의 체크된 것만 chkBoxes 변수에 담아주고 

chkBoxes.eq(i).val(); 를 통해서 체크된 value 값을 순서대로 chkArr에 push

를 통해 담아준다.
그리고 아이디 선택자로 chkArr의 value값에 배열을 넣어준다.

 

 

 

 

controller.java

리퀘스트파람 맵에 받아졌고 맵에서 꺼내서 콘솔에 찍으면

 

 

 

위와같이 정상적으로 체크된 3개가 찍히는걸 볼 수 있다.

그러나 3,4,5 로 찍힌게 배열은 아니고 String 이다.

그러면 애초에 String을 올린건가? 아니면 배열을 보냈는데 String으로 받은건가?

 

 

 

 

 

분명히 배열로 선언했고 배열에 넣었다

 

 

 

 

 

alert을 통해 chkArr의 타입을 찍었더니 object로 나오는 거 보니 배열인것같다.

(String은 string이라고 뜸)

 

 

 

 

 

input 태그의 값을 넣어주는 아이디 선택자의 val() 을 찍어보면

 

string 타입이다 ;;;

즉, 컨트롤러 단으로 넘길때 애초에 String을 넘긴것이다

 

 

 

 

 

 

 

그렇다면 Map으로 받지 말고 자바단에서 배열로 받아서 콘솔에 찍어보면

 

 

 

 

 

배열을 바로 출력하면 힙의 주소값이 찍히는데 @이후에 주소값인거보니 배열이 맞다.

 

 

 

 

 

 

배열로 받으니깐 배열로 문제없이 나오는 것처럼 보인다.

 

 

 

 

 

 

그런데 함정이 있다 위와 같이 콘솔에 보이게 한다면

 

 

 

 

 

length가 1이고 0번째가 3,4,5 로 되어있다. 사실은 배열의 0번째에 3,4,5 가 들어있었던것!

 

 

 

 

 

 

 

주소창에서 쿼리스트링으로 1~8까지 한번 날려봤더니

위에서 찍은거랑 똑같이 나온다.

지금까지 한건 위의 주소에 쿼리스트링을 보낼때 1,2,3,4,5,6,7,8, 로 보낸거랑 똑같은거였다.