질문 객체에 id 인스턴스 변수를 추가하고 ArrayList에 질문 객체를 추가할 때 ArrayList.size() + 1을 질문 객체의 id로 사용한다.
질문이 만들어질때 날짜데이터 입력넣도록하기.
@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으로 선언해서 사용하도록하고 외부에서는 사용하지 못하도록한다.