ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [스프링] 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

    댓글

Designed by Tistory.