프로젝트/G.O.A.T(여행 스케줄러)

게시판 세션별로 버튼 나누기, 리스트띄우기

찌서니 2022. 1. 6. 12:25

원래는 고객문의 삭제컬럼을 안 만들었는데

생각해보니까 이상한글을 쓰면 관리자는 삭제해야될거 같아서

CS테이블에 DEL 추가

alter table cs add del char(1) default 'n' not null;

근데 이거 추가했더니 갑자기 잘 뜨던 list가 안뜸...

그래서 컨트롤러에서 데이터값이 안오는건가? 이래서 list 출력했는데

잘오고 있는데 컬럼을 봤더니 del 어딨어!!

빠져있어서 생각했더니 model에서 del 추가를 안함!

package com.ch.goat.model;

import java.sql.Date;

import lombok.Data;
@Data
public class Cs {
	private int cs_num;
	private String cs_title;
	private Date reg_date;
	private String cs_content;
	private int cs_view;
	private int cs_ref;
	private int cs_re_step;
	private int cs_re_level;
	private int m_num;
	private String del;
	
	// 페이징용
	private int startRow;
	private int endRow;
	
	// 고객문의 작성자띄우기
	private String m_name;
}

이렇게 하면 뜰까...?

안뜨는데 왜 안뜰까... 분명 list로 다 보내는데.. empty list면 '처리할 문의가 없습니다' 뜨게 했는데

그게 안뜨는거 보면 list가 뜨고 있는데 데이터가 안보인다ㅜ

 

진짜 어이없는 실수였다... 이럴수가...!!!

그래서 혹시 <c:if>가 안되는건지 확인해봤는데 empty list일때는 돌아가서

그러면 not empty list를 복붙으로 돌려봤더니 돌아가서, 내가 쓴 코드가 문제인건데

혹시 list 뒤에 띄어쓰면 안되나? 이러고 봤더니 }뒤에 한칸이 띄어져있었음

어제 del 추가한다고 이것저것 해보다가 삭제가 안됐나보다

진짜 이거 때문에 2시간 가까이 날린듯... 너무 허무해ㅜ

 

 

이제 리스트를 띄웠으니까 하나씩 해볼까?

✔ 관리자일때만 답변,삭제 버튼
✔ 고객문의 삭제
✔ 고객문의 넘버링
✔ 답글의 제일 마지막에만 버튼 보이게 또는 원래꺼에 달면 마지막으로 가게

 

 

이번에는 회원테이블에 admin컬럼(default='n') 줘서 따로 관리자 테이블을 안만들었는데

세션체크에서 로그인하면 회원이든 관리자든 똑같아서

회원파트한 사람한테 관리자도 나눠줘요,,, 해서 세션 두개를 얻었다!

문제는 Member에서 같이 받아오니까 하나씩 할때는 되는데, java에서 두개를 같이 했더니

자꾸 null 값이 들어와서 에러난다고ㅜ

@RequestMapping("cs/csInsertForm")
	public String csInsertForm(Cs cs, String pageNum, HttpSession session, Model model) {
		String m_id = (String) session.getAttribute("id");
		String admin_id = (String) session.getAttribute("adminid");

		if(m_id == null) {
			Member adminInfo = ms.select(admin_id);
			model.addAttribute("adminInfo",adminInfo);
		}
		if(admin_id == null) {
			Member member = ms.select(m_id);
			model.addAttribute("member",member);
		}

		// ref 답변글끼리 뭉칠때, re_level 들여쓰기, re_step 답변글 순서
		int ref = 0, re_level = 0, re_step = 0;
		int cs_num = cs.getCs_num();
		Cs cs1 = null;
		String content = null;
			
		if(cs_num != 0) {
			cs1 = css.select(cs_num);
			content = cs1.getCs_content();
			ref = cs1.getCs_ref();
			re_step = cs1.getCs_re_step();
			re_level = cs1.getCs_re_level();
		}	
		
		model.addAttribute("content",content);
		model.addAttribute("cs_num", cs_num);
		model.addAttribute("pageNum", pageNum);
		model.addAttribute("ref", ref);
		model.addAttribute("re_level", re_level);
		model.addAttribute("re_step", re_step);
			
		return "cs/csInsertForm";
	}

그래서 성현오빠한테 찬스썼더니 알려준게,

if를 걸어서 null이 오면 각자 걸면 되지 않을까? 이러고 실행했더니 됐다,, 감격!!!!

m_id(회원세션)값이 null이 들어오면 관리자가 로그인 -> 그렇기 때문에 관리자를 검색해서 adminInfo로 보냄

                                                                        (처음에는 admin으로 보냈는데 세션도 admin으로 돼있어서

                                                                        혹시나 이거때문에 오류인줄 알고 바꿔놨다.)

admin_id(관리자세션)값이 null이 들어오면 회원이 로그인 -> 그렇기 때문에 회원을 검색해서 member로 보냄

 

 

 

csView에서도 관리자세션일때만 답변글등록/삭제 버튼 보이게 수정

<c:if test="${not empty admin}">
	<a href="csInsertForm.do?cs_num=${cs.cs_num}&pageNum=${pageNum }" class="btn btn-success">답변등록</a>
    <input type="button" onclick="delCs()" class="btn btn-danger" value="삭제">
</c:if>

 

 

고객문의 넘버링은 java에서 no를 넘겼기 때문에 ${no}만 사용해주면

바로 넘버링 됐다.

 

 

답글의 제일 마지막에만 버튼 보이게 또는 원래꺼에 달면 마지막으로 가게

- 이 부분은 제외하기로 했는데,, 어차피 그 글에다 작성자가 글을 또 달면

게시판이 너무 길어지기도 하고, 관리자세션일때만 버튼을 보기에 했기 때문에

다시 조건 거는거 보다는 '추가 문의사항은 새로운 글을 통해 해주세요'라고 말하고 막아버렸다^^

 

 

저번 jsp로 프로젝트 할때는 git 충돌이 없었는데,,,

이번에는 자꾸 실행할때마다 target 파일이 자동으로 생겨서 같이 올라가서 충돌이 난다ㅜ

지금 branch만 날린게 2-3번이었나? 더이상은 날리고 싶지 않습니다....