ERROR RESOLVING

오류 class java.lang.String cannot be cast to class

Adev 2023. 1. 21. 00:01

[상황] 

form 태그에서 name값이 동일한 <input type = hidden>이 2개 있다.
submit으로 이 name값을 보내줄때 상황에 따라 아예 보내지 않거나 1개 또는 2개를 보내도록 설정했다.
service단에서 위 값을 string[] 배열로 받도록 설정했더니 2개를 보냈을 때는 잘 받아지는데, 보내지 않거나 1개를 보낼 시 아래 오류가 떴다.

 

 

[오류]

Request processing failed; nested exception is java.lang.ClassCastException: class java.lang.String cannot be cast to class [Ljava.lang.String; (java.lang.String and [Ljava.lang.String; are in module java.base of loader 'bootstrap')

java.lang.ClassCastException: class java.lang.String cannot be cast to class [Ljava.lang.String; (java.lang.String and [Ljava.lang.String; are in module java.base of loader 'bootstrap')

 

[해결] 

아무것도 보내지 않거나 1개를 보낼 시 string[] 배열로 받을 수 없기 때문에 오류가 뜨는 것 같았다.
그래서 service단에서 무조건 string[]배열로 받는 게 아니라 상황을 3가지로 나누고 if문을 사용해서 조건을 줬다.
if - 넘어오는 값이 없을 때 (값 0개)
else - 값이 배열로 넘어 올 때 (값 2개)
else - 값이 배열로 넘어오지 않을 때 (값 1개)
이 중 값이 2개가 넘어올때만 값을 배열 string[]으로 받도록 설정하니 해결됐다.