카테고리 없음

0309 오후수업

logloglog 2021. 3. 9. 15:43

리무브

@RequestMapping(value="/{bno}/{rno}/{page}",method=RequestMethod.DELETE)
	public ResponseEntity<String> remove(@PathVariable("rno") int rno,
										@PathVariable("bno") int bno,
										@PathVariable("page") int page) throws Exception{
		ResponseEntity<String> entity = null;
		try {
			service.removeReply(rno);
			
			SearchCriteria cri = new SearchCriteria();
			
			Map<String, Object> dataMap = service.getReplyList(bno, cri);
			PageMaker pageMaker = (PageMaker)dataMap.get("pageMaker");
			
			int realEndPage = pageMaker.getRealEndPage();
			if(page>realEndPage) {page=realEndPage;}
			
			entity = new ResponseEntity<String>(""+page,HttpStatus.OK);
		}catch (SQLException e) {
			e.printStackTrace();
			entity=new ResponseEntity<String>(HttpStatus.INTERNAL_SERVER_ERROR);
			// TODO: handle exception
		}
	return entity;			
	}

 

 

jsp 수정해야됨

 

 

이제 유알엘을

이렇게해야하므로
여기고쳐야됨


우리는 쿠키안써도된다

왜?

//댓글 리스트
	//var replyPage=$.cookie('reply_page') ? $.cookie('reply_page'):1;

쿠키로 페이지유지하고잇엇는데 이걸대체할수있는게뭐가잇을까

 

 

처름에 온로드하면

'리플라이페이지를 얘가줌 (쿠키에서 받은거를)
그래서 여기서써먹엇었는데.. 이걸 대체할수잇는게잇을까

 

결론: 쿠키없이 페이지유지안됨

 

쿠키를 쓰지않으면 새고하면 다 뒤집혀서 안됨

자바스크립트(후처리)로 만든 페이지의 상태를 유지할수잇는건 쿠키말구 아무것도없다

 


자유게시판 페이지유지안됨

상태유지되게해보자

 

>안됨

 

상태유지가될려면 주소줄에 무족건 의존임

카테고리는 됨

즉 회원리스트자체를 유지하는건됨 파라미터에 잇음. 주소줄에잇음

주소줄에 mcode 가잇으니까

 

index.do?mcode=M00000 

여기서 새고파면 index.do 담당하는컨트롤러가 받음

여기서 mcode를 파라미터로받고, 서비스에요청해서 메뉴리스트랑해당메뉴브이오받음

이걸 포워딩을 함

(indexPage.jsp로)

이게 html로 바껴서 모양이 보이는거임

 

메뉴 각각에 mcode값을 넣고

메뉴안에는 서브메뉴의 엠코드값이들어가잇음 subMenu().gopage(mcode)

이녀석이 좌측에 서브메뉴를만듦과 동시에 고페이지에서는 아이프레임의 화면도 만든다.

즉 상태유지가 될라믄 mcode 이부분에 그정보가잇어야하는데 페이지정보를 받은적이없음

 

서브메뉴에도 고페이지가 잇지만 (url)뿐 페이지정보는없다.

 

우리가보고잇는 리스트페이지는 자바스크립트에 서브밋을 눌러서 후처리로 나온 화면인거임

그래서 새고하면 index.do?mcode=M00000 여기서부터 시작이라 여기서부터 페이지정보줘야하는거임

 

자바스크립트로 상태유지를 할수잇는 녀석이필요함  > 자바스크립드에 있는쿠키 써야햠

html로 구현햇을땐 페이지유지가 다 됏엇음 왜? 그댸는 페이지를 다 만들어서 보낸게 아니고 ??????????

 

암튼

만약 유지하고싶다면 주소줄로 하게끔 해야함

핑크색에서는 쿠키날리고 연두색에서는 쿠키세팅해줘야함 누를떄마다.리플라이용, 메인페이지용 쿠키는따로만들고

 

 

쿠키쓰기싫으면

아이프레임 없애고 한페이지로 만들어야함

단점: 뭐누를떄마다 껌벅껌벅

 

~1교시 마지막 다시듣기~

 


ㅠ알엘 다 바꾸면 됨

function searchList_go(page){	
	
	replyPage=page;
	setPageParams(replyPage,10, '','');
	
	var pageParamsKeys = Object.keys(pageParams);
	for(var key of pageParamsKeys){		
		$.cookie("reply_"+key,pageParams[key],{path:"/"});        
	}
	getPage("<%=request.getContextPath()%>/replies/${board.bno}/"+replyPage); //리스트 출력	
	return false;
}

여기도
여기도

 

 

 

삭제는 

리플라이스/bno/rno/page 이렇게 바꼇으므로

url:"/board/replies/remove.do",

이게

url:"<%=request.getContextPath()%>/replies/${board.bno}/"+rno+}"/"+replyPage,

 

등록은 안됨

 

 

추가

 

 

이부분떔시
이렇게수정

 

잘등록되고 잘 수정된다

 

후처리로 만들어진 페이지의 상태유지는 쿠키를 써야함

그렇지않으면 유지되지않ㅇ는다

 

우리가보고잇는 메인페이지의 아이프레임 부분은

자바스크립트에의해서 후처리된 화면이기떄문에 

새고안햇을떄는 유지가 됨 즉 리스트에서 정렬개수정하고 제목정해서 검색하면 30개씩 나오게 하고 2페이지 가도 30개씩 나옴.. 아님 유지안됨

새고가 아니고 페이지번호 누를떄는 유지가되어야함

 

 

여기가 비어잇어서엿음

이러면 키워드도 페이지 이동해도 유지가 된다

근데 새고하면 유알엘이 초기화되니까 유지가안됨

 

 


이렇게 바로들어가면 전부 유지됨 새고도, 정렬갯수랑키워드하고 새고도 전부유지

유알엘에 파라미터도 안보이는데 어케유지?

이렇게 하면 무조건 처음에 이거 로드되고 그담부턴 밑에꺼

이렇게 쓰면 새고하면 무조건 1페이지씩 간다

 

즉 아까 유지됐던건

그냥 요청이 안간거엿음


그럼 유지어케?

유지ㄹ하려고

주소줄에 파라미터남기는방법 : 메서드방식을 get으로 돌린다.

이제 새고해도 유지임

 

즉 페이지유지하려면 post말고 겟방식써서 파라미터 남기자


유알엘변경으로 페이지이동하려면?

 

프레임의 아이프레임방식

 

 

프로젝트 복사

 

아이프레임안쓰고 해볼거임

메뉴나 서브메뉴형태가 바뀌는건아니고

페이지이동방식, 사이트메쉬유알엘 재정의, 탬플릿의변경이 필요함

 

main.js

goPage가 아이프레임이 아니라 실제 로케이션을 하는거임

 

 

 

 

 

 

 

 

 

 


타일즈프레임웤

사이트메쉬들어내야함

 

여기서 해당 템플릿이 나오게 할거임

인덱스없앨거고

 

decorators.xml

얘를

새창나오는쪽에서는 메뉴가 나오면 안됨

패런츠쪽은 나와야함 

이걸 어케규정함?

얘들은 메뉴가 나오면안됨
얘들은 사이트메쉬가 먹으면 안되는애들이고
이렇게
인덱스.do 안불러와서 메뉴리스트업음

 

 

템플릿에 메뉴가 나왔으면 좋겠다

지금 화면을 멤ㅂㅓ컨트롤러가 열기떄문에 메뉴리스트와 메뉴를 안주고잇는거임

 

그럼 결국 컨트롤러가 메뉴리스트랑 메뉴줘야함

얘가 메뉴리스트 줘야함 결국 메뉴서비스 받아야함

@Autowired
	private MenuService menuService;

홈은 메뉴 안보임.. 없어서 못보여줌

필터를 걸거나, 등의 방법이있따.

근데 필터는 좀 오바다 > 컨트롤러에 매서드마다 매번해야함

 

메인메뉴는 필터로, 서브메뉴는 다르게하자

 

일;단 서브메뉴만들자

메인메뉴클릭하면 서브메뉴 404임

 

 

메인jsp가 템플릿에 없음 (메인데코레이터에)없음 (임포트하는게)

<script src="<%=request.getContextPath() %>/resources/js/main/main.js"></script>

ㅇ매인데콜이터에 추가

 

메인js는 indexPage.jsp에 있엇는데 이제 여기(템플릿에)와야함

 

이제 누르면 이동은 함


새로운 어노테이션

@ModelAttribute("menuList")
	public List<MenuVO> subMenu() throws SQLException{
		List<MenuVO> menuList = menuService.getMainMenuList();
		return menuList;
	}

우리가 컨트롤러할떄마다 모델에 심는것과 관계없이

무조건 컨트롤러할떄마다 (컨트롤러가 모델 받건말건상관없이) 모델에 이거 심어주는거임

어떤컨트롤러가 실행되건간에 모델에 이거 심어짐

 

이놈들 없어도모델에들어가는것
리스트화면을 열떄 그냥 들어가잇다

 

커먼컨트롤러에도 메뉴필요하니까 붙여보자

보드컨트롤러에도

 

 

*메뉴를 jsp에 박지말기 (중복코드)

 

모양이안이쁨

 

메인데코레이터에

body부분에

<div class="content-wrapper">로 감싸야함

 <div class="content-wrapper">
 	<decorator:body /> 
 </div>

 

이제 서브메뉴만 나오면 됨

 

우리지금 

메인데코레이터 jsp는 메뉴리스트를 받아서 포이ㅌ치로 돌리고잇는것

즉 얘한테 메뉴리스트만 떨궈주면 뿌리게되어잇는거임

 

서브메뉴 살리자

서브메뉴는 레스트방식을 살리려고함

 

메인js

 엠코드필요없으니 다지움

메뉴가일단 나오면

이렇게 들어가잇는데

뭐가문제냐면

 

메인js

function subMenu(mcode,contextPath){
	if(mcode!="M000000"){
		$.getJSON(contextPath+"/common/subMenu.do?mCode="+mcode,function(data){	
			//console.log(data);		
			printData(data,$('.subMenuList'),$('#subMenu-list-template'),'.subMenu');
		});
	}else{
		$('.subMenuList').html("");		
	}
}

이게 ㄷ커먼컨트롤러에 가서 메뉴를 받아 리스트로 던짐

그걸 다시 서브메뉴 메서드가 받아서 ㅃ리는거임

이렇게는 나오는데,, 왜 안나올까?

 

indexPage.jsp에서 이거 가져오기 메인데코레이터로

<script type="text/x-handlebars-template"  id="subMenu-list-template" >
{{#each .}}
   <li class="nav-item subMenu" >
         <a href="javascript:goPage('<%=request.getContextPath() %>{{murl}}','{{mcode}}');initPageParam();" class="nav-link">
          <i class="{{micon}}"></i>
             <p>{{mname}}</p>
        </a>
   </li>
{{/each}}
</script>

템플릿을 넣어도 안나오는..

 

서브메뉴가 못나오는디

그이유는

메인js 에서 메뉴를 선택하면

고페이지로 아이프레임 펼쳐주고 서브메뉴는 서브메뉴 보여줫엇는데

이제 고페이지가 유알엘 돌리니까

첨에 서브메뉴가 표현됏다가 뒤에오는 고페이지떄문에 없어지는거임

 

1은 살릴수잇음 2가 문제임

>> 서브메뉴를 표현한다음에 고페이지로 가니까 안나옴

그럼

이제부터 파라미터 주소줄은 해당페이지의 상태위한 파라미터기떄문에

그걸 엠코드로 받으면 문제가 생김

 

후처리된 페이지는 파라미터 유지가안되므로 쿠키쓰지말고

 

 

서브메뉴를 받아서 포이치로돌릴것임

 

서브메뉴() 유지하려고햇더니 안되니까

지우자

 

메인데코레이터

 <!-- Sidebar Menu -->
      <nav class="mt-2">
        <ul class="nav nav-pills nav-sidebar flex-column subMenuList" data-widget="treeview" role="menu" data-accordion="false">
             <!--  sub-menu-list -->
           <c:forEach items="${subMenuList }" var="menu">
                <li class="nav-item subMenu" >
                  <a href="javascript:goPage('<%=request.getContextPath() %>${menu.murl }');" class="nav-link">
                   <i class="${menu.micon }"></i>
                      <p>${menu.mname }</p>
                 </a>
            </li>
           </c:forEach>
        </ul>
      </nav>
      <!-- /.sidebar-menu -->

 

컨트롤러마다

@Autowired
	private MenuService menuService;
	
	@ModelAttribute("menuList")
	public List<MenuVO> mainMenu() throws SQLException{
		List<MenuVO> menuList = menuService.getMainMenuList();
		return menuList;
	}
	
	@ModelAttribute("subMenuList")
	public List<MenuVO> subMenu()throws SQLException{
		List<MenuVO> subMenuList = menuService.getSubMenuList("M010000");
		return subMenuList;
	}
	

여기수정

메인데코레이터

<!-- Navbar -->
  <nav class="main-header navbar navbar-expand navbar-white navbar-light">
    <!-- Left navbar links -->
    <ul class="navbar-nav main-menu-list">
        <!-- main menu list -->
        <c:forEach var="menu" items="${menuList }">
            <li class="nav-item d-done d-sm-inline-block">
               <a href="javascript: goPage('<%=request.getContextPath() %>${menu.murl }');" 
               onclick="" class="nav-link">${menu.mname }</a>
         </li>
        </c:forEach>
    </ul>