목록분류 전체보기 (718)
쌓고 쌓다
기존에 @Valid로 유효성 검사를 했으나 이번에 배운 BindingResult를 적용해보고자 다시 수정해보았다. 글로벌 에러와 타입 에러를 적용해보고자 뜬금 없지만 게시글 작성시 키와 몸무게도 입력하게 바꿨다. 키와 몸무게 컬럼 추가 ALTER TABLE poster ADD height bigint; ALTER TABLE poster ADD weight bigint; BindingResult 사용 @PostMapping("/posters/{category}") public String write(@ModelAttribute Poster poster, BindingResult bindingResult){ if(poster.getHeight()!=null && poster.getWeight()!=null)..
폼에 데이터를 입력하여 서버에 전달했다. 이때 유효하지 않은 데이터가 있다면 다시 데이터를 작성할 필요가 있다. 이때 작성한 데이터는 유지하고 에러 내용을 같이 넘겨보자. 폼 데이터 유지 먼저 폼 데이터 유지 방법에 대해 보자. @GetMapping("/add") public String addForm(Model model) { model.addAttribute("item", new Item()); return "validation/v1/addForm"; } 입력 폼을 요청이 들어왔을때 입력 폼을 통해 바인딩할 빈 객체를 하나 생성해서 넣어준다. 이렇게 빈 객체를 왜 넣어줘야하나싶지만 유효성 검사나 재사용에 매우 좋은 효과를 얻을 수 있다. 입력 폼에서 th:object와 th:field로 많은 이점을 ..
https://school.programmers.co.kr/learn/courses/30/lessons/12936 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 방법 [1, 2, 3] [1, 3, 2] [2, 1, 3] [2, 3, 1] [3, 1, 2] [3, 2, 1] 첫번째 번호가 동일하게 반복되는 규칙이있다. N이 주어졌을때 N-1만큼 첫번째 번호는 순서대로 동일한 값을 갖는다. N-1이 주어졌을때 N-2만큼 첫번째 번호는 순서대로 동일한 값을 갖는다. 만약 N이 3일때 2만큼 첫번째 번호가 반복된다. 1, ... 1, ... 2, ... 2..
공지사항 기능을 위해 공지사항 테이블을 따로 만들까, 게시글에 카테고리 컬럼을 추가할까... 이런저런 생각하다가 일단 상단 고정 기능부터 만들어봤다. Poster 클래스 fix 필드 추가 @Entity @Getter @Setter public class Poster { private Boolean fix; } 고정할 게시글인지 fix 필드로 구별한다. Poster 테이블 fix 컬럼 추가 alter table poster add fix boolean; -- BOOLEAN = tinyint(1) -- 고정할 게시글은 fix 컬럼의 0과 1로 구별한다. 게시글 작성 폼 체크박스로 게시글 고정 유무를 설정하다. 게시글 목록 HTML No title writer date ... 게시글 목록 출력 위에 반복문으로..
사용자에게 보이는 HTML 화면에 "상품명"이라는 단어를 모두 "상품 이름"으로 바꾸길 원한다. 하지만 "상품명"은 아래처럼 하드코딩되어 있다. 상품명 "상품명"을 "상품 이름"으로 바꾸길 원한다면 모든 파일을 하나하나 열어서 수정해야 한다. 이 문제를 해결할 좋은 메시지 기능이 있다. 이런 문자열 메시지를 한 곳에서 관리하는 것이다. resources 아래에 messages.properties로 관리 파일을 만들자. 그리고 아래의 내용을 작성해 보자. messages.properties label.item=상품 label.item.id=상품 ID label.item.itemName=상품명 Key와 Value 형식이다. {0}로 파라미터를 받을 수 있다. test.html TEST TEST 타임리프의 #..
https://school.programmers.co.kr/learn/courses/30/lessons/86971 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 방법 주어진 wires는 트리의 형태이다. 순환이 없고 N개의 노드가 있다면 N-1개의 간선으로 모두가 연결된 상태이다. 즉. wires를 통해 모두가 연결된 상태이며 wires[i]번째의 간선을 끊으면 두개의 트리로 쪼개진단 말이다. 내가 생각한 풀이는 위의 원리를 이용해 wries[i]번째의 간선이 끊어진 상태라고 생각하고 모든 노드에대해 DFS를 수행한다. 하나의 노드 방문시 송전탑의 ..
@Data public class Item { private List regions; //등록 지역 } 아이템 클래스의 등록 지역(ex. 부산, 서울)을 가지는 필드가 있다. 이 필드를 다중 체크 박스를 통해 값을 넣어보자. @ModelAttribute("regions") public Map regions() { Map regions = new LinkedHashMap(); // HashMap은 순서가 보장안되나 LinkedHashMap은 보장됨 regions.put("SEOUL", "서울"); regions.put("BUSAN", "부산"); regions.put("JEJU", "제주"); return regions; } 컨트롤러에 @ModelAttribute를 메서드에 사용하여 어떤 메서드를 호출하더..
필요성 먼저 코드를 보자. @Controller @RequestMapping("/form/items") @RequiredArgsConstructor @Slf4j public class FormItemController { private final ItemRepository itemRepository; @GetMapping public String items(Model model) { Map regions = new LinkedHashMap(); regions.put("SEOUL", "서울"); regions.put("BUSAN", "부산"); regions.put("JEJU", "제주"); model.addAttribute("regions", regions); return "form/items"; } @..