결론은 그렇다
브라우저는 일반적으로 input 요소의 value 속성을 빈 문자열('') 로 취급하므로, 직접적으로 null 을 할당하더라도 이를 빈 문자열로 처리하는 것이다.
좀 더 자세히 살펴보기 위해 아래 예제를 보자
<html>
<input type="hidden" id="pageId" name="pageId" value="">
<script>
(function ($) {
var $pageId = $('#pageId');
$pageId.val(null);
})(jQuery);
</scirpt>
</html>
다음과 같이 id 가 'pageId' 인 값의 value 값을 null 로 할당했다.
null 이 들어갔을까??
$pageId.val() === null // false
그렇지 않다.
그렇다면 다음은 어떨까?
$pageId.val() === '' //true
$pageId.val('');
$pageId.val('') === $pageId.val(null); //true
다음과 같이 HTML의 input 요소의 value 속성에 null 을 할당하면, JavaScript 에서는 해당 속성이 빈 문자열('')로 설정된다.
이는 브라우저가 HTML 요소의 vlaue 속성에 null 대신 빈 문자열을 사용하는 기본적인 특성 때문이다.
나는 어쩌다 해당 사실을 발견하게 되었을까??
View -> Controller 로 파라미터 값을 넘기는 과정에서 null 값이 들어올 때의 처리를 디버깅하기 위해 null 값을 임의로 넣어보려했다.
하지만 위와 같이 null 값이 아닌 빈 문자열이 넘어온다는 사실을 발견했다.
+ ) Map 에서 공백값 처리
파라미터값은 다음과 같이 Map 에 담아 Controller 에 넘겨준다.
ex ) { pageId : 'abcd-12'}
Map 에서 값을 넘겨받을 때 공백처리를 해서 Null 값이 들어오는 것을 방지할 수 있다.
'Map<String,String> page' 이 있다고 하자
String pageInfo = page.getOrDefalut("pageInfo","none");
이렇게 하면 page Map 에서 key 값이 "pageInfo" 인 것을 찾아서 value 를 pageInfo 에 저장하고,
값이 없다면(null 이라면) pageInfo 에 "none"을 저장하는 것이다.
NPE 절때 막아 ~~
![](https://t1.daumcdn.net/keditor/emoticon/face/large/011.png)
[ 참고 자료 ] - getOrDefalut() 예제를 통해 살펴보기
코딩 기초 트레이닝 > 문자열 묶기 Java #getOrDefault()
https://school.programmers.co.kr/learn/courses/30/lessons/181855 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞
megak.tistory.com
'TIL' 카테고리의 다른 글
TIL | 7 proxies (0) | 2024.03.29 |
---|---|
' i18n ' 이란 ? (0) | 2024.03.12 |
TIL | 요구사항 작성법 (2) | 2023.11.13 |
SQL 예제를 풀어볼 수 있는 사이트들 (0) | 2023.11.08 |
[오류해결] org.springframework.beans.factory.CannotLoadBeanClassException: (0) | 2023.10.24 |