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
반응형
'Dev > SpringBoot' 카테고리의 다른 글
28. [springboot] 프로젝트 초기에 구성하면 좋을 것들 (0) | 2020.11.28 |
---|---|
27. [springboot] 환경 구성 분리하기 (0) | 2020.11.16 |
25. [springboot] Thymeleaf select option에 관하여 (0) | 2020.11.02 |
24. [SpringBoot] RESTFul한 로그인 구현 예제 - 2 (0) | 2020.10.06 |
23. [SpringBoot] RESTFul한 로그인 구현 예제 (0) | 2020.10.05 |