Make Be BackEnd
[Spring] 컨트롤러에서 전송된 medel 값이 출력되지 않을 때 본문
현상
컨트롤러에서 ModelAndView를 사용해서 값을 전달해 리다이렉트로 보낸 다음 View에서 메세지를 뿌려주는 작업 도중 메시지가 확인되지 않는 경우
원인
리다이렉트로 값이 넘어가고 해당 값을 jsp에서 값이 넘어오지만 스크립트에서 사용이 되지 않았다. 메세지를 지정해둔 enum 값에서 "\n" 줄바꿈을 했더니 되지 않았다. \n은 %0A로 인코딩이 되었고 해당 인코딩된 값이 문제가 되었다.
해결
- 인코딩 된 값을 디코딩해서 사용
- 줄바꿈 문자가 포함된 경우 인코딩된 값을 적용되게 변경
<!--1 -->
window.onload=function(){
var params = new URLSearchParams(window.location.search);
var code = params.get('code');
var msg = params.get('msg');
if(code != '' && code != '<%= MemberMessageEnum.SUCCESS.getCode() %>'){
alert(decodeURIComponent(msg));
}
}
<!--2 -->
window.onload=function(){
var code = '${code}';
var msg = '${msg}'.replace(/\\n/g,'\n');
if(code !== '' && code !== '<%= MemberMessageEnum.SUCCESS.getCode() %>' && code !== null){
alert(msg);
}
}