상세 페이지 이동
예약 정보 상세 controller를 작성한다.
//예약정보 상세
@RequestMapping(value= "/rsv/rsvSelect.do")
public String select(@ModelAttribute("searchVO") ReservationVO searchVO, HttpServletRequest request, ModelMap model) throws Exception{
request.getSession().removeAttribute("sessionReservationAplly");
LoginVO user = (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser();
model.addAttribute("USER_INFO", user);
ReservationVO result = reservationService.selectReservation(searchVO);
model.addAttribute("result", result);
return "rsv/RsvSelect";
}
return 값에 맞춰 jsp 작성
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="ui" uri="http://egovframework.gov/ctl/ui" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Language" content="ko">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width,initial-scale=1.0,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no"/>
<title>상세페이지 이동</title>
<!-- BBS Style -->
<link href="/asset/study/BBSTMP_0000000000001/style.css" rel="stylesheet"/>
<!-- 공통 style -->
<link href="/asset/study/LYTTMP_0000000000000/style.css" rel="stylesheet"/>
<script src="http://code.jquery.com/jquery-latest.min.js"></script>
<!-- JQUERY UI -->
<script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script>
<link rel="stylesheet" href="//code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css">
<script src="//cdnjs.cloudflare.com/ajax/libs/timepicker/1.3.5/jquery.timepicker.min.js"></script>
<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/timepicker/1.3.5/jquery.timepicker.mis.css">
</head>
<body>
<%--기본url --%>
<c:url var="_BASE_PARAM" value="">
<c:param name="resveId" value="${searchVO.resveId}"/>
<c:param name="pageIndex" value="${searchVO.pageIndex}"/>
<c:if test="${not empty searchVO.searchCondition}">
<c:param name="searchCondition" value="${searchVO.searchCondition}"></c:param>
</c:if>
</c:url>
<!-- content시작 -->
<div id="content">
<div class="container">
<div id = "contents">
<div id="bbs_wrap">
<div class="board_view">
<dl class="tit_view">
<dt>프로그램명</dt>
<dd><c:out value="${result.resveSj}"/></dd>
</dl>
<dl class="tit_view">
<dt>신청유형</dt>
<dd>
<c:choose>
<c:when test="${result.resveSeCode eq 'TYPE01'}">선착순</c:when>
<c:when test="${result.resveSeCode eq 'TYPE02'}">승인관리</c:when>
</c:choose>
</dd>
</dl>
<dl class="tit_view">
<dt>강사명</dt>
<dd><c:out value="${result.recNm}"/></dd>
</dl>
<dl class="info_view">
<dt>운영일자</dt>
<dd><c:out value="${result.useBeginDt}"/> ~ <c:out value="${result.useEndDt}"/></dd>
<dt>운영시간</dt>
<dd><c:out value="${result.useBeginTime}"/> ~ <c:out value="${result.useEndTime}"/></dd>
<dt>신청기간</dt>
<dd><c:out value="${result.reqstBgnde}"/> ~ <c:out value="${result.reqstEndde}"/></dd>
<dt>신청 가능한 인원</dt>
<dd><c:out value="${result.maxAplyCnt}"/></dd>
</dl>
<dl class="info_view2">
<dt>작성자ID</dt>
<dd><c:out value="${result.frstRegisterId}"/></dd>
<dt>작성일</dt>
<dd><fmt:formatDate value="${result.frstRegistPnttm}" pattern="yyyy-MM-dd"/></dd>
</dl>
<div class="view_cont">
<c:out value="${result.resveCn}" escapeXml="false"/>
</div>
</div>
<div class="btn-cont ar">
<c:choose>
<c:when test="${result.applyStatus eq '1'}"><a href="#" class="btn btn-status" data-status="${result.applyStatus}">접수대기중</a></c:when>
<c:when test="${result.applyStatus eq '2'}"><a href="/rsv/rsvAapplyRegist.do${_BASE_PARAM}" id="btn-apply" class="btn spot">신청</a></c:when>
<c:when test="${result.applyStatus eq '3'}"><a href="#" class="btn btn-status" data-staus="${result.applyStatus}">접수마감</a></c:when>
<c:when test="${result.applyStatus eq '4'}"><a href="#" class="btn btn-status" data-staus="${result.applyStatus}">운영중</a></c:when>
<c:otherwise>
<a href="#" class="btn btn-status" data-staus="${result.applyStatus}">종료</a>
</c:otherwise>
</c:choose>
<c:url var="listUrl" value="/rsv/selectList.do${_BASE_PARAM}"/>
<a href="${listUrl}" class="btn">목록</a>
</div>
</div>
</div>
</div>
</div>
<!-- content끝 -->
<script>
$(document).ready(function(){
//예약상태 메세지
$(".btn-status").click(function(){
var status = $(this).data("status");
if(status == "1"){
alert("현재 접수대기중인 상태입니다.");
}else if(status == "3"){
alert("현재 접수마감 상태입니다");
}else if(status == "4"){
alert("현재 운영중인 상태입니다");
}else if(status == "5"){
alert("현재 운영 종료 상태입니다.");
}
});
//신청
$("#btn-reg").click(function(){
if(!confirm("신청하시겠습니까?")){
return false;
}
});
//신청가능여부 체크 후 진행
$("#btn-apply").click(function(){
var href = $(this).attr("href");
$.ajax({
type : "POST",
url : "/rsv/rsvCheck.json",
data : {"resveId" : "${searchVO.resveId}"},
dataType : "json",
success : function(result) {
if(result.successYn == "Y"){
location.href = href;
}else{
alert(result.message);
}
}, error : function(result) {
alert("error");
}
});
return false;
});
});
</script>
</body>
</html>
프로그램명 클릭 시 상세 페이지가 나와야 한다. http://localhost/rsv/selectList.do
상세페이지에서 신청을 눌렀을 때 파라미터값이 잘 넘어갔는지 확인하고 에러 팝업창이 나와야 한다.
잘된거 같았는데 작성자가 안뜬다..!!ㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠ
jsp에서 script 안에 json을 사용하고 싶으면 web.xml 확장자 추가
<filter-mapping>
<filter-name>encodingFilter</filter-name>
<url-pattern>*.json</url-pattern>
</filter-mapping>
<servlet-mapping>
<servlet-name>action</servlet-name>
<url-pattern>*.json</url-pattern>
</servlet-mapping>
ReservationApplyContoller 를 추가해준다.
package egovframework.let.rsv.web;
import java.io.PrintWriter;
import java.util.List;
import javax.annotation.Resource;
import javax.enterprise.inject.Model;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import com.ibatis.sqlmap.engine.mapping.result.loader.ResultLoader;
import egovframework.com.cmm.LoginVO;
import egovframework.com.cmm.util.EgovUserDetailsHelper;
import egovframework.let.rsv.service.ReservationApplyVO;
import egovframework.let.rsv.service.ReservationService;
import egovframework.let.rsv.service.ReservationVO;
import egovframework.rte.fdl.string.EgovStringUtil;
import egovframework.rte.psl.dataaccess.util.EgovMap;
import egovframework.rte.ptl.mvc.tags.ui.pagination.PaginationInfo;
import net.sf.json.JSONObject;
import okhttp3.internal.http.RequestLine;
@Controller
public class ReservationApplyController {
@Resource(name="reservationService")
private ReservationApplyService reservationServiceApply;
@Resource(name="reservationService")
private ReservationService reservationService;
//예약여부 체크
@RequestMapping(value=" /rsv/rsvCheck.json")
public void rsvCheck(@ModelAttribute("searchVO") ReservationApplyVO searchVO, HttpServletRequest request, HttpServletResponse response, Model model) throws Exception{
String successYn = "Y";
String message = "성공";
JSONObject jo = new JSONObject(); //net
response.setContentType("text/javascript; charset=utf-8");
LoginVO user = (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser();
if(user == null || EgovStringUtil.isEmpty(user.getId())) {
successYn = "N";
message = "로그인 사용 후 가능합니다";
}
searchVO.setUserId(user.getId());
ReservationApplyVO result = ReservationServiceApply.rsvCheck(searchVO);
if(!EgovStringUtil.isEmpty(result.getErrorCode())) {
successYn ="N";
message = result.getMessage();
}
jo.put("successYn", successYn);
jo.put("message", message);
PrintWriter printWriter = response.getWriter();
printWriter.println(jo.toString());
printWriter.flush();
printWriter.close();
}
}
RservationApplySerivce 작성
package egovframework.let.rsv.service;
public interface ReservationApplyService {
//예약가능여부 확인
public ReservationApplyVO rsvCheck(ReservationApplyVO vo) throws Exception;
}
ReservationApplySql
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="egovframework.let.rsv.service.impl.ReservationApplyMapper">
<select id="duplicateApplyCheck" resultType="java.lang.Integer">
SELECT
COUNT(*) CNT
FROM RESERQSTINFO A
WHERE RESVE_ID = #{resveId}
AND FRST_REGISTER_ID = #{userId}
AND USE_AT = 'Y'
<include refid="selectReservationListWhere"></include>
</select>
</mapper>
//예약정보 등록.수정
@RequestMapping(value="/rsv/rsvApplyRegist.do")
public String rsvApplyRegist(@ModelAttribute("searchVO") ReservationApplyVO searchVO,HttpServletRequest request, Model model) throws Exception{
LoginVO user = (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser();
if(user==null || EgovStringUtil.isEmpty(user.getId())) {
model.addAttribute("message", "로그인 후 사용가능합니다");
return "forward:/rsv/selectList.do";
}else {
model.addAttribute("USER_INFO", user);
}
//프로그램 정보
ReservationVO reservation = new ReservationVO();
if(!EgovStringUtil.isEmpty(searchVO.getResveId())) {
reservation = reservationService.selectReservation(searchVO);
}
model.addAttribute("reservation", reservation);
//예약정보
ReservationApplyVO result = new ReservationApplyVO();
if(!EgovStringUtil.isEmpty(searchVO.getResveId())) {
result = reservationApplyService.selectReservationApply(searchVO);
}
model.addAttribute("result", result);
request.getSession().removeAttribute("sessionReservationApply");
return "rsv/RsvApplyRegist";
}
serviceimpl
//예약자 상세 정보
public ReservationApplyVO selectReservationApply(ReservationApplyVO vo) throws Exception {
return reservationApplyMapper.selectReservationApply(vo);
}
'Coding > 전자정부프레임' 카테고리의 다른 글
3.사용자 예약프로그램 만들기 (0) | 2022.09.21 |
---|---|
1.예약 프로그램 관리자 페이지 (0) | 2022.09.21 |
예약관리 (0) | 2022.09.14 |
OAuth 2.0 버전을 이용하여 네이버 로그인해보기 (0) | 2022.09.07 |
회원가입 (0) | 2022.08.17 |