TIL 2021.03.05

Kyu·2021년 3월 5일
0

TIL

목록 보기
54/322

문제1

질문 객체에 id 인스턴스 변수를 추가하고 ArrayList에 질문 객체를 추가할 때 ArrayList.size() + 1을 질문 객체의 id로 사용한다.

  1. Question 클래스에 private int 로 id 를 선언한다.
  2. QuestionController 클래스에 question 만드는 메서드에서 Index를 외부에서 셋팅하고 question ArrayList에 담아준다.
  3. 질문목록에서 제목을 클릭했을떄 해당하는 질문을 얻어오기 위해서 index 변수를 잘 활용해서 해당되는 질문을 리스트에서 뽑아 모델에 넣어준다.
  4. return 에는 질문상세보기의 페이지를 리턴해주고 그 페이지의 속성 값들을 잘 지정해준다. 끝!

문제2

질문이 만들어질때 날짜데이터 입력넣도록하기.

  1. 먼저 질문 객체부터 날짜데이터를 받을수있는 필드 생성!
  2. 날짜데이터가 포함된 모든 html 수정
  3. 날짜데이터를 뭐 어떻게든 생성해서 String 값으로 받는다
  4. 질문리스트 어레이리스트에 담기전에 생성한 날짜데이터 String 값을 setter 한다

문제3

    @GetMapping("/{index}")
    public String getQuestion(@PathVariable("index") long index, Model model) {
        model.addAttribute("question", questions.get((int) index - 1));
        return "/qna/show";
    }

PathVariable("index") 라고 넣어주셨는데 어떤 역할을 하는거죠? 저는 ("index")가 없어도 잘 작동하는데 왜 넣으신지 궁금해서요~!!

Shion 4:09 PM
명시적으로 넣어주었습니다 ㅋㅋㅋ
나중에 변수가 많아지면 넣어주는게 안 헷갈리고 좋을 것 같은데 지금처럼 1개만 있다면 굳이 안넣어줘도 될 것 같네요 ㅜㅜ
루카스 보고 한거라..
ㅋㅋㅋㅋㅋ

Kyu 4:14 PM
아하
제가 코드따라치면서 이해한 @PathVariable 는 그냥 @Mapping 으로 받은 url의 변수?를 파라미터로 넘겨주기 위해서 @PathVariable 을 붙여주는걸로 이해했거든요
그래서 PathVariable 도 괄호안에 뭔가 넣을수있는 걸 몰랐었어요
PathVariable 안에 시온처럼 넣어주면 어떤 역할을 하는거에요? 그냥 명시적으로 나는 url에 있는 {index} 를 파라미터로 받을꺼야 라는뜻인가?

Shion 4:17 PM
맞습니다 ㅋㅋㅋ @PathVariable 안에 명시해주지 않으면
{index}와 이름이 일치하는 파라미터 long index 를 찾아서 알아서 매핑해주기 때문에 @PathVariable 단독으로 사용해도 가능한거고
@PathVariable("index") long index 이렇게 앞에 써주면 {index}를 현재 변수 index와 일치시켜준다고 명시해서
@PathVariable("index") long xedni 요런식으로 변수 이름이 바껴도 찾아줄 수 있다고 알고 있어요 ㅋㅋㅋ

기타

private static 필드는 어디에 쓰일까 궁금했었는데, static method 메서드를 필드를 가져와서 쓰고 싶을때 그 필드를 private static으로 선언해서 사용하도록하고 외부에서는 사용하지 못하도록한다.

profile
TIL 남기는 공간입니다

0개의 댓글