[프로젝트] 웹 ITEM FARM - day05

_bean_·2023년 4월 21일
0
post-thumbnail

1. 오류 및 문제점

1. 헤더에서 선택한 기업 정보 세션에 저장

  • 문제점: 헤더에서 기업을 선택하면 세션에 저장 후 해당 기업의 정보로 새로고침 되어야 한다.
  • 해결 방안: 드롭다운이 변경되면 ajax를 통해 서버에 기업 id를 parameter를 전달한다. 전달된 parameter를 각 controller에서 세션에 저장한다.

2. 조회 기업 변경 Ajax

  • 문제점: 조회 기업 변경 후 선택한 기업에 대한 정보를 parameter로 전달하기 때문에 이전의 일반 get 방식을 사용할 수 없다.
  • 해결 방안: 선택한 기업 정보는 session에 저장되기 때문에 get 요청 주소 뒤에 session에서 불러온 parameter를 추가한다.
HttpSession session = request.getSession();
		
int comId = (int) session.getAttribute("comId");
String comName = (String) session.getAttribute("comName");

return "redirect:/company/companyList.do?comId=" + comId + "&comName=" + comName;

진행 상황

1. 헤더에서 선택한 기업 정보 세션에 저장

  • a 태그에서 data-OO 속성으로 company_id를 전달한다.
  • 특정 a 클래스를 눌렀을 때 ajax로 동일 path에 parameter를 전달한다.
  • 각 controller에서는 세션의 값을 변경하는 코드가 있어야 한다.
  • nav를 선택한 경우 parameter가 존재하지 않는다. 하지만 로그인 시 세션에 기업 값을 저장하기 때문에 세션에서 불러온 값을 parameter로 전달한다.
<!-- header.jsp -->
<li class="nav-item no-arrow dropdown">
	<a class="nav-link dropdown-toggle" href="#" role="button" id="dropdownMenuLink"
    data-toggle="dropdown" aria-haspopup="true" aria-expanded="false" >
    	<i class="fas fa-sign-out-alt fa-sm fa-fw mr-2 text-gray-400"></i>
    	<span class="mr-2 d-none d-lg-inline text-gray-600 small">조회 기업 변경</span>
    </a>
    <div id="select-box" class="dropdown-menu dropdown-menu-right shadow animated--fade-in" aria-labelledby="dropdownMenuLink">
    	<div class="dropdown-header">기업 목록</div>
        <c:forEach items="${lookUpList}" var="look" varStatus="status">
        	<a class="dropdown-item" data-company="${look.company_id}">${look.company_name}</a>
        </c:forEach>
    </div>
</li>

<script>
	$(".dropdown-item").on("click", function () {
		var comId = $(this).attr("data-company");
		var url = $(location).attr("pathname") + "?comID=" + comId;

		$.ajax({
			url: $(location).attr("pathname"),
			data: {"comID":comId},
			success: function (result) {
				$(location).attr("href", url);
			},
			error: function(message) {
				alert(message);
			}
		}); 
	});
</script>
<!-- nav.jsp -->
<li class="nav-item ">
  <a class="nav-link" href="../product/productList.do?comID=${comID}">
    <i class="fas fa-fw fa-briefcase"></i>
    <span>상품관리</span>
  </a>
</li>
// ProductController.java
public class ProductListController implements CommonInterface {

	@Override
	public String execute(Map<String, Object> data) throws Exception {
		HttpServletRequest request = (HttpServletRequest) data.get("request");
		HttpSession session = request.getSession();

		int comID = Integer.parseInt(request.getParameter("comID"));
		session.setAttribute("comID", comID);
		
		ProductService service = new ProductService();
		
		List<ProductVO> companyList = service.productList(comID);
		
		request.setAttribute("productList", companyList);
		
		return "/product/product_list.jsp";
	}

}

참고 자료

profile
어쩌다 풀스택 :3

0개의 댓글