MKureha
130
2020-02-04 12:21:01
5
311

검색후 페이징 유지 질문있어요!..


이곳 저곳 다 찾아봤는데 검색 후 페이징 기능이 이해가 안되서 정상 작동을 하지 않습니다...

검색은 되는데, 검색 후 페이징하면 초기 설정의 페이징으로 넘어가버립니다!...

도움 부탁드립니다!



@RequestMapping("GS/list")
	@PostMapping
	public String list(HttpServletRequest request
			,@RequestParam(required = false, defaultValue = "tosyo_num") String searchtype
			,@RequestParam(required = false) String keyword) {
		BoardVO BoardVO = new BoardVO();
		String pagenum = request.getParameter("pagenum");
		String contentnum = request.getParameter("contentnum");
		System.out.println(pagenum);
		System.out.println(contentnum);
		System.out.println(searchtype);
		int cpagenum = Integer.parseInt(pagenum);
		int ccontentnum = Integer.parseInt(contentnum);

		BoardVO.setsearchtype(searchtype);
		BoardVO.setkeyword(keyword);
		
		BoardVO.settotalcount(mapper.tosyocount()); // 전체계수
		BoardVO.setpagenum(cpagenum - 1); // 현재 페이지 객체 지정
		BoardVO.setcontentnum(ccontentnum); // 한 페이지 게시글 수
		BoardVO.setcurrentblock(cpagenum); // 현재 페이지블록 번호
		BoardVO.setlastblock(BoardVO.gettotalcount()); // 마지막 블록 전체 게시글 수

		BoardVO.prevnext(cpagenum); // 현재 페이지 화살표
		BoardVO.setstartpage(BoardVO.getcurrentblock()); // 시작페이지 블록 번호
		BoardVO.setendpage(BoardVO.getlastblock(), BoardVO.getcurrentblock()); // 마지막 페이지 블럭 현재 페이지 블록

		List<BoardVO> listpage = new ArrayList<BoardVO>();
		listpage = mapper.listpage(BoardVO.getpagenum() * 10, BoardVO.getcontentnum(), BoardVO.getsearchtype(), BoardVO.getkeyword());

		System.out.println("Parameter keyword : " + request.getParameter("keyword"));
		System.out.println("Board keyword : " + BoardVO.getkeyword());
		
		request.setAttribute("list", listpage);
		request.setAttribute("page", BoardVO);

		return "list";
	}


<%@ page language="java" contentType="text/html; charset=UTF-8"
	pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>LIST</title>
<script src="/webjars/jquery/3.4.1/jquery.min.js"></script>
<!-- Paging -->
<script type="text/javascript">
<!-- paging -->
	function page(idx) {
		var pagenum = idx;
		var contentnum = 10;
		var searchtype = $('#searchtype').val()
		var keyword = $('#keyword').val()
		var url = "${pageContext.request.contextPath}/GS/list?pagenum=" + pagenum + "&contentnum=" + contentnum;
		url = url + "&searchtype=" + searchtype;
		url = url + "&keyword=" + keyword;
		location.href = url;
		
	};
<!-- Search -->
	$(document).on('click', '#btnSearch', function(e){
		e.preventDefault();
		var url = "${pageContext.request.contextPath}/GS/list?pagenum=1&contentnum=10";
		url = url + "&searchtype=" + $('#searchtype').val();
		url = url + "&keyword=" + $('#keyword').val();
		location.href = url;
		console.log(url);
	});	
</script>

</head>
<body>
	<h2>BOOK LIST</h2>
	<p>
		<select class="form-control form-control-sm" name="searchtype"
			id="searchtype">
			<option value="tosyo_num" selected="selected">図書番号</option>
			<option value="tosyo_name">図書名</option>
			<option value="tosyo_daibunrui">大分類</option>
			<option value="tosyo_cyubunrui">中分類</option>
		</select>
	</p>
	<form action="search" method="get">
		<div>
			<input type="text" class="form-control form-control-sm"
				name="keyword" id="keyword" placeholder="Keywordを入力してください">
		</div>
		<button class="btn btn-sm btn-primary" name="btnSearch" id="btnSearch">検索</button>
		<button class="btn btn-primary" onclick="location.href='/insert'">ADD
			BOOK</button>
		<input type="button" value="logout" class="btn btn-primary"
			onclick="location.href='/login'"> <br>

		<div class="container">
			<table class="table table-hover">
				<thead>
					<tr>
						<th>図書番号</th>
						<th>図書名</th>
						<th>大分類</th>
						<th>中分類</th>
						<th>在庫有無</th>
					</tr>
				</thead>
				<tbody>
					<c:forEach var="tosyo" items="${list}">
						<tr onclick="location.href='/GS/detail/${tosyo.tosyo_number}'">
							<td>${tosyo.tosyo_num}</td>
							<td>${tosyo.tosyo_name}</td>
							<td>${tosyo.tosyo_daibunrui}</td>
							<td>${tosyo.tosyo_cyubunrui}</td>
							<td>${tosyo.tosyo_count}</td>
						</tr>
					</c:forEach>
				</tbody>
				<tfoot>
					<tr>
						<td colspan="2"><c:if test="${page.prev}">
								<a style="text-decoration: none;"
									href="javascript:page(${page.getstartpage()-1});">&laquo;</a>
							</c:if> <c:forEach begin="${page.getstartpage()}"
								end="${page.getendpage()}" var="idx">
								<a style="text-decoration: none;"
									href="javascript:page(${idx});">${idx}</a>
							</c:forEach> <c:if test="${page.next}">
								<a style="text-decoration: none;"
									href="javascript:page(${page.getendpage()+1});">&raquo;</a>
							</c:if></td>
					</tr>
				</tfoot>
			</table>
		</div>
	</form>
	<%@ include file="bootstrap.jsp"%>
</body>
</html>


0
0
  • 답변 5

  • 잼재재미
    600
    2020-02-04 12:36:49 작성 2020-02-04 12:42:01 수정됨

    일반 페이징은 정상동작하는데

    검색후에 검색결과에대한 페이징이 일반 페이징으로동작한다는건가요?

    0
  • 스켈레톤
    92
    2020-02-04 13:24:20 작성 2020-02-04 13:35:16 수정됨

    검색 결과 화면에서 검색어 <input> 에 검색어를 value 에 셋팅하는 부분 안보입니다

    검색 후 페이지 이동하면 검색어값이 없이 페이지 이동이 될것 같아요


    <input type="text" class="form-control form-control-sm"
    				name="keyword" id="keyword" placeholder="Keywordを入力してください">


    $("#keyword").val() 값이 없어서 검색어 없이 페이징 처리가 될것이라 예상됩니다

    	function page(idx) {
    		var pagenum = idx;
    		var contentnum = 10;
    		var searchtype = $('#searchtype').val()
    		var keyword = $('#keyword').val()
    		var url = "${pageContext.request.contextPath}/GS/list?pagenum=" + pagenum + "&contentnum=" + contentnum;
    		url = url + "&searchtype=" + searchtype;
    		url = url + "&keyword=" + keyword;
    		location.href = url;
    		
    	};


    2
  • MKureha
    130
    2020-02-04 13:30:53

    https://okky.kr/user/info/4587https://okky.kr/user/info/4587스켈레톤https://okky.kr/user/info/48954


    잼재재미//네네 검색후에 일반페이징으로 검색해버립니다.


    스켈레톤//그럼 검색 후에도 검색어와 검색어 필터가 유지되게 해야한다는거군요

    0
  • 잼재재미
    600
    2020-02-04 13:36:36

    스켈레톤님 말씀이 맞을것 같네요.

    아예 안도는게 아니고 일반페이징으로 도는건 결국 db쿼리에 keyword가 포함이 안된다는거니까요.

    검색후에는 컨트롤러 쪽으로 keyword가 전달이 안되는 이유 같습니다.


    0
  • MKureha
    130
    2020-02-04 14:15:25

    https://okky.kr/user/info/48954


    스켈레톤님 말대로해서 페이징은 해결했습니다!... 감사합니다

    0
  • 로그인을 하시면 답변을 등록할 수 있습니다.