오류 및 편의성 모음

ora-01407 cannot update () to null (ajax 오류)

단데기이 2022. 6. 15. 13:38
728x90

해당오류는 회원정보 수정에서 이메일 부분을 변경하려다 발생한 오류이다.

변경할 이메일을 입력하고 수정을 누르면 아래 함수 이벤트와 연동되어 이메일이 수정되도록하였다.

function email_modify(){
		// 입력값 변수
        const mail = $('.i_email').val(); // 이메일 입력란
        const memberId = "<c:out value='${memberInfo.memberId }'/>";
        
        const data = {
        		mail : memberMail,
        		memberId : memberId,
		}
        
        console.log(mail);
        console.log(memberId);
        /* 이메일 유효성 검사 */
        if(mailFormCheck(mail) && mail != ""){
            mailCheck = true;
            alert("Email 형식입니다.");
        }else{
        	mailCheck = false;
            alert("올바르지 않은 Email 형식입니다.");
        }
        
        if(mailCheck == true){
        	$.ajax({
        		data : data,
        		url : "/mypage/emailModify",
        		type : "POST",
        		success : function(result){
        			alert("email을 수정하였습니다.")
        		}
        			
        	});
        } else{
        	alert("email 수정에 실패했습니다.")
        }
        
        return false;
	}
	function mailFormCheck(email){
    	var form =  new RegExp(/^[0-9a-zA-Z]([-_.]?[0-9a-zA-Z])*@[0-9a-zA-Z]([-_.]?[0-9a-zA-Z])*.[a-zA-Z]{2,3}$/i);
    	return form.test(email);
    }

 

매퍼인터페이스 -> 매퍼xml -> 서비스인터페이스 -> 서비스Impl -> 컨트롤러 -> ajax(view)  이러한 순서대로 만들었다.

 

이렇게 만든다음 수정버튼을 눌렀지만 이 글의 제목내용처럼 오류가 발생하더니 기능이 작동하지않았다.

 

오류 로그를 살펴보다 memberID는 제대로 들어갔는데 memberMail이 NULL값이라는것을 확인하였다.

 

따라서 값하나는 들어갔는데 나머지는 안들어간것에 대해 생각해보다 VO객체와 변수명이 틀린것을 알아차렸다.

 

VO 클래스에는 memberMail로 해놓고선 ajax의 data부분에는 mail로 퉁쳐서 생긴일이다. 

memberID는 제대로 매핑을 했으니 들어간것이다.

 

따라서 data 변수 부분의 mail : mail 부분을 memberMail : mail 로 변경해주면 제대로 동작한다.

 

ajax의 data 부분의 규칙?을 제대로 생각하지 않아서 생긴 오류이다.

data = { vo변수명 : 자바크스립트 변수명}