🖥️ Back/Spring

웹 사이트 관리하면서 입력폼을 받다보면 검증 로직이 필수적이다.스프링에서 처리하는 검증로직을 점차적으로 발전시켜가본다. 검증시 오류가 발생하면 필드명을 key로 설정하여 HashMap에 담아 보관한다. @PostMapping("/add") public String addItem(@ModelAttribute ValidationItem item, RedirectAttributes redirectAttributes, Model model) { //검증 오류 결과 보관 Map errors = new HashMap(); //검증 로직 if(!StringUtils.hasText(item.getItemName())) { errors.pu..
프로젝트 운영에 있어서 문구들을 공통 파일로 관리하면 편하다.resources 폴더 아래로 messages 파일을 만들면 스프링이 알아서 스프링 빈으로 등록해준다.//resources > messages_ko.propertieshello=안녕hello.name=안녕 {0}label.item=상품label.item.id=상품 IDlabel.item.itemName=상품명label.item.price=가격label.item.quantity=수량page.items=상품 목록page.item=상품 상세page.addItem=상품 등록page.updateItem=상품 수정button.save=저장button.cancel=취소//messages_en.propertieshello=hellohello.name=hell..
입력 폼 처리 @GetMapping("/add") public String addForm(Model model) { //빈 객체 전달 model.addAttribute("item", new Form()); return "thymeleaf/form/addForm"; } th:field는 id, name, vale 속성을 모두 자동으로 만들어준다. 상품명 가격 수량 렌더링 전 렌더링 후 요구사항 추가 판매여부는 체크 박스로 선택할 수 있도록 할것이다. 상품종류는 라디오버튼으로 하나만 선택할 수 있도록 할 것이다. 배송방식은 셀렉트..
템플릿 조각웹 페이지에서 상단, 하단, 좌측 카테고리 등 공통 영역이 많다.같은 코드를 매번 복사하면 비효율적이라서 타임리프는 템플릿 조각과 레이아웃 기능을 지원한다. @GetMapping("/fragment") public String template() { return "template/fragment/fragmentMain"; } th:fragment가 있는 태그는 다른 곳에서 포함되는 코드 조각으로 가져온다. 푸터 자리 입니다. 부분 포함하는 insert로 현재 태그(div) 내부에 추가한다.푸터 자리 입니다. replace를 사용하면 현재 태그(div)를 대체한다. 파라미터를 전달해서 동적으로 조각을 렌더링할 수 있다. 파라미터 자리 ..
타임리프는 서버에서 HTML을 동적으로 렌더링하는 용도로 사용된다. 스프링과 통합되면서 스프링의 다양한 기능을 편리하게 사용할 수 있게 지원한다. 타임리프 공식 사이트 https://www.thymeleaf.org/공식 메뉴얼 - 기본 기능 https://www.thymeleaf.org/doc/tutorials/3.0/usingthymeleaf.html공식 메뉴얼 - 스프링 통합 https://www.thymeleaf.org/doc/tutorials/3.0/thymeleafspring.html표준 표현식 구문 https://www.thymeleaf.org/doc/tutorials/3.0/usingthymeleaf.html#standard-expression-syntax 타임리프 사용 선언 text, u..
사용자는 브라우저에 상품 등록 폼에서 값을 입력하고 POST 요청을 보낸다.컨트롤러는 그 값을 받아 객체에 저장하고, 결과 화면을 보여주거나 상세 페이지로 이동한다.content-type : application/x-www-form-urlencoded메시지 바디에 쿼리 파라미터 형식으로 전잘된다. 예) usernamewow&age=100 @RequestParam @RequestParam를 사용해서 하나씩 받아 수동으로 객체에 넣는다.파라미터가 길어지면 코드도 길어지고 매번 set 해줘야하는 번거로움이 있다. @PostMapping("/add") public String addItemV1(@RequestParam String itemName, ..
지구용사
'🖥️ Back/Spring' 카테고리의 글 목록