Open sehyeogi365 opened 1 year ago
예전의 비슷한예로 회원가입은 됐는데 디비상에 저장안되는 오류가 있었다.
Comment comment = commentDAO.selectComment(roomId);//몇몇 호텔의 댓삭이 안이뤄지는 상황. FileManagerService.removeFile(comment.getImagePath());
비오에서 이거 아예 삭제해주니까
제대로 삭제는 된다.
아마 그래 저게 원인이였던거 같다.
굳이 찜이랑 예약삭제도 저거를 안넣는데 굳이
생각해보니 한행조회가 rooId, userId 이렇게 해야 제대로 되는거 같기도 하고? 다른거 보니 그렇다.
비오다오 나중에 그렇게 수정해보고 제대로 해보자.
메가그램 postBO 참고 아마 그때 조회된 데이터가 없어서 뭐 댓삭이 안된거같은데..
그래서 한행조회에서 userId까지 넣으라는거 같고
댓삭도 현재 비오에
Comment comment = commentDAO.selectComment(roomId, userId);//몇몇 호텔의 댓삭이 안이뤄지는 상황. FileManagerService.removeFile(comment.getImagePath());
까지 추가하고 컨트롤러에 유저아이디 세션값을 불러와서 이렇게
하는중인데
아난티 싱글룸 댓글은 잘된다.
근데 다른거는
안된다.
Expected one result (or null) to be returned by selectOne(), but found: 2
이런 500에러가 뜨는데
내가 볼땐,
해당 룸아이디 댓글이 2개이상일때 이게뜸
roomId로 삭제하는건 맞는데
사실 한사람이 같은숙소 객실을 이용하고, 해당객실에 댓글을 두번이상 다는경우 드문데..
그럼 그외의 경우는 다 잘된다.
그렇다면 예외처리를 만들어볼것.
같은 숙소 같은 객실에 같은유저가 두번이상 댓글 못달게끔
또는
다른 값을 받아서 삭제하거나 둘중 하나
웃긴게 아난티 더블룸, 트윈룸은 되는상황
근데 싱글룸은 안되는상황??
왜 더블룸만 되는지 알겠다.
아난티코브 로징아이디가 3인데 더블룸 룸아이디도 3이라서 그것만 되는상황인거임 그렇담 어떻게 해결할까이거를?
그럼 모달창 값만 roomId로 하고 나머지 객체화 시킬때 넣는값들은 죄다 lodgingId 로 넣자
<div class="modal fade" id="commentModal${reserve.roomId }"
그결과 잘됐는데 여전히 객실사이즈는 undefined가 뜨는상황
아마 그값을 넣는 부분, reservelist에서 인풋부분 거기가 문제인가봄
알고보니 사이즈 인풋을 객체화를 안시킴
id="sizeInput${reserve.lodgingId }"
Cannot invoke "com.marondal.choongmotour.lodging.model.Comment.getImagePath()" because "comment" is null
알고보니 다오서 로징아이디를 아이디로 안바꿈
Parameter 'lodgingId' not found. Available parameters are [id, userId, param1, param2]
500에러 등장
다오와 매퍼를 봐달라는 뜻
한행 조회도 id, userId를
삭제도 id, userId를 파라미터로 하자
삭제가 정상적으로 된다.
이렇게 하자 아예 undefined가 안뜨고 ""이뜨는상황..
<input type="text" id="sizeInput${reserve.lodgingId }" value="${reserve.size }" class="form-control">
이렇게 하니 당연히 된다.
근데 상시적으로 댓글 달때
객실사이즈는 고정값으로 그렇게 들어가야하기 마련인데
어떡하면 될까 readonly로 하자니 undefined가 뜬다.
오류 총정리
커멘트 모달에id="commentModal${reserve.roomId }"
를 집어넣는대신 id를 집어넣으면 엉뚱한값이 나옴 모달클릭했을때, 왜냐면 카드의 댓글달기 버튼에도
룸아이디로 했으므로
id ="starpointSelector${reserve.lodgingId }"
각 id별 객체 태그 뺄때 상황
그냥 전체가 한행이 되어버린다.
뒤에있는 강원호텔, 웨스틴 조선다 안달리는 상황
그리고 모달창내의 댓글달기 버튼에는 객체화 시켜야 댓글달린다.
댓글달기
그리고 모든 인풋객체값
reserve.roomId로 할때 생기는 상황
alert창이 undefined로 된다.
슬슬 한단계 접근하자면, 예약카드의 댓글 달기 버튼id값 이랑
모달창 id값 을 lodgingID로 줘봤다. data-target="#commentModal${reserve.lodgingId }" id="commentModal${reserve.lodgingId }"
그 결과
아난티코브는 다 트윈룸으로 뜨고
강원 호텔, 웨스틴조선은 정상적으로 뜬다.
결국에 아까말한 그 내용이 맞다.
lodgingId가 같으면 한행이 된다고, 그럼 아예 모달창 대신 페이지로 만들어버릴까 편하게? 잘 모르겠다.
내가 볼때 살짝 오류였나보다.
맨첨에 예약 하고 댓글달았을때는 roomId별로 했던게 갑자기 lodgingId별로 댓글달라고 바뀌어서 그런건지 몰라도
지금 새계정인 고트에서 하니까 어제 오류 안생기고 댓글 정상적으로 달린다.
근데 이런오류는 있다. 분명 더블룸 댓글인데 입력할때 첨부터 singleroom 이렇게 써져있고
분명히 그때 room.jsp 모달창 할때 어떤 객실을 택해도 싱글룸 상세정보가 떴던 현상과 유사.
그니까 이게 참 난해하다.
data-target="#commentModal${reserve.roomId }" data-room-id="${reserve.roomId }"
여기부분이랑 id="commentModal${reserve.roomId }"
이부분을 roomId로 바꾸면
어제처럼 숙소 id 가 같으면 다 댓글을 입력하세요 이거 뜬단 말야
그리고..
저기를 lodgingId로 하면 댓글은 달리는데
맨앞에 카드의 사이즈로만 댓글달리고 어떡해야하나?
정말 혹시나 하는맘에 사이즈만 객체화 안시키고 진행했다 그결과 <input type="text" id="sizeInput" let size = $("#sizeInput").val();
이랬더니
alert창이라던가 댓글에는 정상적으로 댓글이 doubleroom거가 달린다. 근데
여전히 댓글모달창위에는 singleroom이라 뜨는상황 왜그럴까?
다시말해 싱글룸인데 더블룸으로 저장되고
뭐 싱글룸인데 그앞 트윈룸으로 저장되고 이현상을 주시해보기
최적의 최적상황으로 커밋했다.
왜 alert창에선 정상적으로 뜨고 input 태그에선 정상적으로 안뜰까? 주시해보기
약3~4가지 경우가 나뉜다.
모달창 roomId로 받고 모달창 인풋태그 객체화 x
or
모달창 lodgingId로 받고 인풋태그 객체화 or 일부 객체화 or 전체 객체화 안시키기
근대 애초에 ReserveDetail여기부터 좀 다르게 해야할지도??
그리고 여기서 발견한거 있는데
예약 취소할때 roomId로 받아오면 안됨
그렇게 되면 동일 숙소의 동일 객실 예약할떄 한번
취소버튼 누르면 두개가 동시에 삭제됨
id로 받아와야 함
웃긴게 lodgingId로 모달창 객체화 한담에
인풋태그 객체화 없애도 작성/삭제 잘된다.
roomId/ id로 모달창 객체화 할때 생기는 현상
맨앞에거만 잘 작성된다.
reserve id 모달창 객체화 +
인풋태그는 lodgingId로 객체화 하니
같은 숙소중 맨앞에거만 잘 되는상황
정답을 알것같다.
결국에 roomId까지받아와서 총 세개의 fk가 필요하다는건데 커멘트테이블에
그래야 size를 불러올수 있는거고
그럼 사이즈를 없애고
roomId이렇게 불러와야하는건데..
생각해보면 딥스라던가 리저브도 userId를 어떻게 입력태그에 넣진 않았으니 그거를 생각해보자.
근데 분명 어디 한군데서라도 막힐거 같다.
조회에서라도 막히든
작성에서라도 막히든
모달창 띄우기 roomId, 댓글달때 lodgingId 인풋 객체화 x 상태로 진행하자
거의 비슷한데
아난티 더블 - 씨마크 싱글 - 아난티 싱글순으로
저장된상태
역시나 그 중간거 씨마크 싱글을 했을때
앞에입력한 아난티 더블의 값 이 alert 창에 들어온다
id값 빼고
그니까 적어도 모달창을 lodgingId가아닌 roomId로 받아온상태서 생각을 다시 해봐야 한다.
이게 한마디로 예약이랑 예약 목록 보는거랑 비슷하다 보면된다.
예약 페이지에서 lodgingId, roomId를 불러왔지만
예약 정보서는 roomId 컬럼 하나만 저장 하듯이
여기선 roomId로 size를 불러오고
댓글 저장은 lodgingId로 하는거랑 보면 되는데..
그냥 전면개선해서
아예 그냥 모달창이아닌 하나의 페이지로 만들기로 했다.
마치 관리자 페이지서 숙소 추가 객실추가 하듯이
400에러가 뜨는데
이거 안고쳐서 이러나봄
처음에 reserve.lodgingId였는데
당연히 이제 다된다 모달창은 진짜 나중가서 함 해결해보자.
또하나 옥의티를 발견하자면, 분명 댓글삭제를 눌렀는데
디비상에선 안사라진다?
왜그럴까?