Dev/SpringBoot
26. [springboot] Thymeleaf 값 전달방법 기초(짱쉬움)
VIPeveloper
2020. 11. 4. 11:02
728x90
반응형
1. 서론
- 한번쯤은 짚고 넘어가볼 만한 html에서 controller로 정보를 넘기는 상황에 대해 정리하고 싶었습니다.
- 이 포스팅을 통해 th:value, th:name 에 대하여 이해할 수 있습니다.
2. 본론
- hidden 값을 이용해 controller 에 값을 전달하고 싶었습니다. 애초에 다른 controller에서 값을 내려줄 때, 저는 model.addAttribute를 통해 키, 벨류를 이용하여 값을 내려주는 과정은 이해하고 있었습니다.
model.addAttribute("userId",1);
<input type="hidden" th:value="${userId}"/>
- 이제 이 값은 th:value에 담기게 됩니다. ${} 문법이 여기에서 중요한데, ${}를 쓰지 않으면 value는 문자 그대로의 userId가 되게 됩니다.
${}를 사용하게 되면 1이 담기게 됩니다.
- 이제 이 1을 controller에 넘겨주기 위해서는 어떻게 해야할까요?
<input type="hidden" th:name="test" th:value="${userId}"/>
- th:name=""을 이용하시면 됩니다. th:value에 담겨있는 값을 th:name을 키값으로 해서 전달이 되는 것이라고 할 수 있습니다.
@PostMapping("/permit")
public String permit_policy_page(PolicyDto dto,String userId){ // userId => firstPageId
Long firstPageId = Long.parseLong(userId);
....
}
다만, 이런 방식은 컨트롤러에서 Long 타입이 아닌, String으로밖에 받지 못합니다.
조금 더 세련된 방식으로는 @RequestParam을 이용하는 방법이 있습니다.
@PostMapping("/permit")
public String permit_policy_page(PolicyDto dto,@RequestParam("userId") Long firstPageId){ // userId => firstPageId
// Long firstPageId = Long.parseLong(userId);
...
}
th:name값을 받아서 바로 Long 타입으로 변환할 수 있습니다.
3. 결론
- th:value 값이 th:name이라는 키값으로 매핑되어 컨트롤러에 전달되고, 이를 String으로 받거나, @RequestParam으로 받아 처리하는 방법에 대해 포스팅해보았습니다.
728x90
반응형