다음은 read.jsp
에서 좋아요 또는 싫어요 버튼을 누른 후 실행되는 성공 콜백 함수이다.
// 결과 성공 콜백함수
success : function(result) {
// console.log(typeof result);
if (result === 1 && isLike === 'Y') {
$('a#cThumbsUpAnchor').addClass('active');
$('a#cThumbsDownAnchor').removeClass('active');
} else if (result === 1 && isLike === 'N') {
$('a#cThumbsUpAnchor').removeClass('active');
$('a#cThumbsDownAnchor').addClass('active');
} else if (result === 2) {
$('a#cThumbsUpAnchor').removeClass('active');
$('a#cThumbsDownAnchor').removeClass('active');
}
},
위의 if-else-if
문 중 어떤 블록도 수행되지 않음을 확인할 수 있었다. RestNoticeController
의 vote()
의 리턴 타입은 int
지만 HTTP 메시지 컨버터를 통해 String
으로 변환된다. 값 뿐만 아니라 타입까지 확인하는 ===
연산의 결과가 false
였기 때문에 어떤 블록도 수행되지 않은 것이다.
// 결과 성공 콜백함수
success : function(result) {
// console.log(typeof result);
if (result === '1' && isLike === 'Y') {
$('a#cThumbsUpAnchor').addClass('active');
$('a#cThumbsDownAnchor').removeClass('active');
} else if (result === '1' && isLike === 'N') {
$('a#cThumbsUpAnchor').removeClass('active');
$('a#cThumbsDownAnchor').addClass('active');
} else if (result === '2') {
$('a#cThumbsUpAnchor').removeClass('active');
$('a#cThumbsDownAnchor').removeClass('active');
}
},
위와 같이 문자열 타입을 비교하도록 변경해주었다.