울음참고 개발공부
728x90

 

 

 

 

결론은 그렇다

 

 

브라우저는 일반적으로 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 절때 막아 ~~

 

 

 

 

[ 참고 자료 ] - getOrDefalut() 예제를 통해 살펴보기

 

 

코딩 기초 트레이닝 > 문자열 묶기 Java #getOrDefault()

https://school.programmers.co.kr/learn/courses/30/lessons/181855 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞

megak.tistory.com

 

 

 

 

 

728x90
profile

울음참고 개발공부

@메각이

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!