-
[스프링] input type = "date" 또는 "datetime-local" 에 데이터베이스에 저장된 날짜 세팅하기Programming/Spring 2021. 8. 16. 03:26
거래처 테이블의 일부, ※ 오라클 데이터베이스 저장된 날짜를 아래와 같이 화면에 출력하고 싶다. 어떻게 해야 할까?
데이터베이스에 input type="date"나 "datetime-local"에 세팅된 값을 저장하는 건 크게 무리가 없었는데
반대로 데이터베이스에 저장된 날짜를 인풋에 세팅하는 건 어떻게 해야 하는지 좀 헤맸다.
처음엔 프론트에서 해결하려고 자바스크립트를 이용했는데 의도대로 작동이 안 돼서... 고민하다가
아예 서버단에서 인풋에 필요한 형식으로 날짜를 다시 DTO빈에 세팅하기로 했다.
진작 이렇게 할 걸... 아니면 더 좋은 방법이 있을까? 궁금하다.
아래는 jsp 해당 부분
<div class="wrap"> <div class="contract"> <span class="label">계약기간</span> <div class="css"> <form:input type="date" path="contract_period_s" value="${searchResult.contract_period_s }" /> </div> <form:input type="date" path="contract_period_e" value="${searchResult.contract_period_e }" /> </div> </div> <div class="group"> <div class="wrap"> <span class="label">등록정보</span> <form:input type="text" path="regi_info_man" value="${searchResult.regi_info_man }" /> <form:input type="datetime-local" path="regi_info_date" value="${searchResult.regi_info_date }" /> </div> <div class="wrap"> <span class="label">변경정보</span> <form:input type="text" path="modi_info_man" value="${searchResult.modi_info_man }" /> <form:input type="datetime-local" path="modi_info_date" value="${searchResult.modi_info_date }" /> </div> </div>
input type="date"와 "datetime-local"의 value에
jsp 표현언어를 이용하여( ${ } )
서버에서 받은 빈의 값을 세팅한다.
컨트롤러 해당 부분
//더블클릭 시 우측 상세 조회 @GetMapping("custom/detail") @ResponseBody public String detailCustomInfo(@RequestParam("busi_num") String busi_num, @ModelAttribute("searchCustomBean") CustomBean searchCustomBean, @ModelAttribute("saveCustomBean") CustomBean saveCustomBean, HttpSession session) { searchCustomBean = mainService.detailCustomInfo(busi_num.trim()); //날짜 세팅 searchCustomBean.setContract_period_s(searchCustomBean.getContract_period_s().substring(0,10)); searchCustomBean.setContract_period_e(searchCustomBean.getContract_period_e().substring(0,10)); searchCustomBean.setRegi_info_date(searchCustomBean.getRegi_info_date().substring(0, 10)+"T"+searchCustomBean.getRegi_info_date().substring(11)); searchCustomBean.setModi_info_date(searchCustomBean.getModi_info_date().substring(0, 10)+"T"+searchCustomBean.getModi_info_date().substring(11)); session.setAttribute("searchResult", searchCustomBean); // ** 꼭 세션에 바인딩을 해서 전달을 해야 하나..? 다른 방법은..? System.out.println("scb" + busi_num + searchCustomBean); return "ok"; }
데이터베이스에서 거래처 정보를 받아 빈에 세팅하고,
필요한 날짜를 게터, 세터를 이용하여
input type="date"와 "datetime-local"의 value에 적합한 형식으로 가공하고 DTO빈에 다시 세팅한다.
//input type="date"
searchCustomBean.setContract_period_s(searchCustomBean.getContract_period_s().substring(0,10));
//input type="datetime-local"
searchCustomBean.setRegi_info_date(searchCustomBean.getRegi_info_date().substring(0, 10) +
"T" +
searchCustomBean.getRegi_info_date().substring(11)
);
'Programming > Spring' 카테고리의 다른 글
Spring Framework (0) 2021.08.06 Request method 'GET' not supported 해결 (0) 2021.07.19 로그인과 세션 스코프 빈 (0) 2021.05.01